我有一个可编辑的ComboBox:
<ComboBox IsEditable="true"/>
Run Code Online (Sandbox Code Playgroud)
更改编辑值时引发的事件是什么?我尝试过TextInput,但这不是解决方案.
Ian*_*anR 119
<ComboBox IsEditable="True" TextBoxBase.TextChanged="ComboBox_TextChanged" />
Run Code Online (Sandbox Code Playgroud)
......应该这样做.(假设您希望每次对文本进行更改时都会触发,而不是当用户输入完文本时.在这种情况下,您需要另一个事件 - 可能是LostFocus事件或什么?)
无论如何,上述XAML的工作原理是,当IsEditable设置为true时,ComboBox使用TextBox来显示和编辑文本.TextBox的TextChanged事件是一个冒泡事件 - 意味着它将在元素树中冒泡,因此我们可以在ComboBox本身上处理它.
唯一"棘手"的一点是ComboBox本身不公开TextChanged事件,但你仍然可以使用附加事件(因此是TextBoxBase.TextChanged语法)为它定义一个处理程序.
(可能值得注意的是完整性,如果ComboBox碰巧包含多个TextBox,则只要其中任何一个文本发生更改,就会调用该处理程序.)
小智 18
基于上面的方法,我查看了(XAML)生成的代码.
<ComboBox x:Name="myComboBox" IsEditable="True"/>
Run Code Online (Sandbox Code Playgroud)
将以下代码添加到初始化:
myComboBox.AddHandler(System.Windows.Controls.Primitives.TextBoxBase.TextChangedEvent,
new System.Windows.Controls.TextChangedEventHandler(ComboBox_TextChanged));
Run Code Online (Sandbox Code Playgroud)
这对我来说很好,因为我需要一个可重用的ComboBox(SQL-Server下拉列表)来封装所有行为.
归档时间: |
|
查看次数: |
38136 次 |
最近记录: |