WinUI3 改變滑鼠游標

在 WinUI3 中要改變滑鼠游標非常麻煩,因為元件的 Cursor 是 protected (還好不是 private),所以無法直接使用,需要先建立自訂類別來繼承元件,然後再將滑鼠游標 Cursor 公開:

建立自訂 MyTextBox ,繼承 MyTextBox ,並將游標公開
    
public class MyTextBox: Microsoft.UI.Xaml.Controls.TextBox
{ 
    public InputCursor Cursor
    {
        get => ProtectedCursor;
        set => ProtectedCursor = value;
    }
}
    

在 xaml 中使用我們剛建立的自訂 TextBox:
    
<local:MyTextBox x:Name="MyTextBox1"/>
    

在程式碼中就可以修改 滑鼠游標了!這裡設定游標移入和移出的事件,移入會變更為「幫助」有問號的滑鼠游標
    
this.MyTextBox1.PointerEntered += (sender, args) =>
{
    MyTextBox1.Cursor =
        Microsoft.UI.Input.InputSystemCursor.Create(Microsoft.UI.Input.InputSystemCursorShape.Help);
};

this.MyTextBox1.PointerExited += (sender, args) =>
{
    MyTextBox1.Cursor =
        Microsoft.UI.Input.InputSystemCursor.Create(Microsoft.UI.Input.InputSystemCursorShape.Arrow);
};
    

Microsoft.Learn - Windows Runtime APIs not supported in desktop apps

留言