C# 选择组合框文本时,将光标更改为方形

C# 选择组合框文本时,将光标更改为方形,c#,wpf,wpf-controls,C#,Wpf,Wpf Controls,我在WPF中有一个可编辑的组合框,它的工作方式是,若文本被选中(高亮显示),光标应该变成十字,这样用户就可以知道他可以将文本移动到另一个组合框中,若用户尝试编辑,光标应该是编辑光标 下面是我正在尝试的代码,关于焦点事件 private void LocationComboBox_GotFocus(object sender, RoutedEventArgs e) { ComboBox combo = (System.Windows.Controls.ComboBox

我在WPF中有一个可编辑的组合框,它的工作方式是,若文本被选中(高亮显示),光标应该变成十字,这样用户就可以知道他可以将文本移动到另一个组合框中,若用户尝试编辑,光标应该是编辑光标

下面是我正在尝试的代码,关于焦点事件

   private void LocationComboBox_GotFocus(object sender, RoutedEventArgs e)
    {
        ComboBox combo = (System.Windows.Controls.ComboBox)sender;
        var edit = (TextBox)combo.Template.FindName("PART_EditableTextBox", combo);

       var selectedText = edit.SelectedText;

       if (!string.IsNullOrEmpty(selectedText))
        {
            Cursor = Cursors.Cross;
        }
        else
        {
            Cursor = Cursors.Arrow;
        }
}
这是屏幕截图

在快照中,由于德克萨斯州奥斯汀高亮显示,我的光标应该是十字

提前谢谢你

使用以下代码:

private void cmb_Loaded(object sender, RoutedEventArgs e)
    {
        TextBox TxtBox = (TextBox)cmb.Template.FindName("PART_EditableTextBox", cmb);
        if (TxtBox != null)
        {
            TxtBox.SelectionChanged += TxtBox_SelectionChanged;
        }
    }

    void TxtBox_SelectionChanged(object sender, RoutedEventArgs e)
    {
        var TxtBox = sender as TextBox;
        if (TxtBox != null && !string.IsNullOrEmpty(TxtBox.SelectedText))
        {
            Mouse.OverrideCursor = Cursors.Cross;
        }
        else
        {
            Mouse.OverrideCursor = Cursors.Arrow;
        }
    }
使用以下代码:

private void cmb_Loaded(object sender, RoutedEventArgs e)
    {
        TextBox TxtBox = (TextBox)cmb.Template.FindName("PART_EditableTextBox", cmb);
        if (TxtBox != null)
        {
            TxtBox.SelectionChanged += TxtBox_SelectionChanged;
        }
    }

    void TxtBox_SelectionChanged(object sender, RoutedEventArgs e)
    {
        var TxtBox = sender as TextBox;
        if (TxtBox != null && !string.IsNullOrEmpty(TxtBox.SelectedText))
        {
            Mouse.OverrideCursor = Cursors.Cross;
        }
        else
        {
            Mouse.OverrideCursor = Cursors.Arrow;
        }
    }