如何从可编辑的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下拉列表)。