我有一个wpf应用程序,它显示了一个自定义组合框。ComboBox的内部Textbox订阅TextChanged事件处理程序。此外,组合框附加到文本过滤行为。它还订阅了textChanged事件处理程序。
现在的场景是:
- 解析app-xaml并创建静态资源(样式):-->内部TextBox是TextChanged的第一个订阅者
- ComboBox-xaml被解析:behavior附加-->它成为TextChanged的第二个订阅者
现在你猜对了:我喜欢成为第一个订阅者的行为,因为它进行过滤,组合框对过滤结果进行操作。
活动订阅位于此处:1) 样式(作为静态资源)
<Style x:Key="MyComboBoxStyle" TargetType="ComboBox">
...
<controls:TextBox x:Name="PART_EditableTextBox"
...
TextChanged="PART_EditableTextBox_TextChanged"/>
</Style>
2) 行为附加到运行时组合框对象:
<myctrl:MyComboBox>
...
<behaviors:FilterBehavior.TextBox="{Binding ElementName=PART_EditableTextBox}">
</myctrl:MyComboBox>
无选项:混合行为/组合框代码,因为该行为用于过滤其他文本输入控件。
我可以强制订阅者成为调用列表的第一个/最后一个吗?
由于我了解到调用列表大多是按订阅顺序调度的,但无法保证,所以我现在使用KeyUp处理程序,而不是OnTextChanged。感谢斯里拉姆的提示!