如何从可编辑的combobox中获取TextChanged事件
我有一个可编辑的combobox
<ComboBox IsEditable = "true"/>
编辑的值更改时引发的事件是什么? 我已经尝试过TextInput,但这不是解决scheme
<ComboBox IsEditable="True" TextBoxBase.TextChanged="ComboBox_TextChanged" />
…应该这样做。 (假设你想要每次改变文本的时候都会触发一些东西,而不是在用户input文本的时候触发,在这种情况下,你需要另外一个事件 – 也许是一个LostFocus事件或者什么?
无论如何,上述XAML的工作原理是,当IsEditable设置为true时,ComboBox使用TextBox来显示和编辑文本。 TextBox的TextChanged事件是一个冒泡事件 – 意味着它将通过元素树冒泡,所以我们可以在ComboBox本身上处理它。
唯一“棘手”的是ComboBox本身不公开一个TextChanged事件,但是你仍然可以使用附加的事件 (因此TextBoxBase.TextChanged语法)来为它定义一个处理程序。
(可能值得注意的是,如果ComboBox碰巧包含多个TextBox,那么只要其中的任何一个文本被更改,就会调用该处理程序。)
基于上面的方法,我查看了(XAML)生成的代码。
<ComboBox x:Name="myComboBox" IsEditable="True"/>
将下面的代码添加到初始化中:
myComboBox.AddHandler(System.Windows.Controls.Primitives.TextBoxBase.TextChangedEvent, new System.Windows.Controls.TextChangedEventHandler(ComboBox_TextChanged));
这对我来说工作正常,因为我需要一个封装所有行为的可重用ComboBox(SQL-Server下拉列表)。