繁体   English   中英

如何将闪烁的光标设置为WPF Editable ComboBox?

[英]How to set the blinking cursor to WPF Editable ComboBox?

在我的WPF程序中,我有一个标准的ComboBox(可编辑)。 我想要的行为是,在FormLoad ,我希望用户能够键入ComboBox并从列表中进行选择。 (在FormLoad我已经用一些字符串填充了它。)因此,我设置了comboBox.Focus() ,并且由于我具有IsTextSearchEnabled="True" (这是默认行为),因此可以正常工作。

我的问题是,设置comboBox.Focus()时,确实确实使控件集中了焦点,但是我没有在其中看到闪烁的光标。 看起来是这样的:

在此处输入图片说明

从理论上讲,这可以完成工作,但是我认为它不是非常用户友好的。 我希望ComboBox能够集中注意力,并且光标也会闪烁。

当我单击可编辑的ComboBox时,我得到闪烁的光标,因此我查找了执行此操作时触发的事件。 原来是PreviewMouseLeftButtonDown ,所以我尝试以编程方式触发此事件(尽管我通常会尝试避免这种情况)以查看是否可以选择。 这是我的代码:

comboBox.RaiseEvent
(
    new MouseButtonEventArgs
    (
        Mouse.PrimaryDevice, 
        Environment.TickCount, 
        MouseButton.Left
    ) 
    { 
        RoutedEvent = PreviewMouseLeftButtonDownEvent 
    }
);

我使用了Console.WriteLine()来打印一条简单消息,以在“输出窗口”中验证事件是否被触发,并且确实如此。 但是,我仍然没有在ComboBox中看到闪烁的光标。

然后我浏览了一下SO,发现了这个问题 ,OP的编辑修订似乎有效。 但是,这似乎是完成似乎看似简单的任务的相当多的方法,所以我想知道是否有一种相当直接或简单的方法可以实现预期的结果。

窗口加载后调用Focus()方法对我来说似乎很好:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        DataContext = this;
        this.Loaded += (s,e) => comboBox.Focus();
     }
}

如果对您不起作用,请提供可复制的问题样本: https : //stackoverflow.com/help/mcve

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM