c#事件订阅:订购订阅者

时间:2013-11-18 12:16:56

标签: c# wpf event-handling

我有一个显示自定义组合框的wpf应用程序。 ComboBox的内部文本框订阅TextChanged事件处理程序。 此外,ComboBox附加到文本过滤行为。它还订阅了textChanged事件处理程序。

现在的情况是:

  1. 解析app xaml并创建静态资源(样式): - >内部TextBox是TextChanged的第一个订阅者。
  2. 解析ComboBox xaml:behavior attaches - >它成为TextChanged的第二个订阅者
  3. 现在你猜对了:我喜欢这个行为成为第一个用户,因为它进行过滤,组合框对过滤结果进行操作。

    活动订阅位于此处: 1)样式(作为StaticResource)

    <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>
    

    无选项:混合行为/组合框代码,因为该行为用于过滤其他文本输入控件。

    我可以强制订阅者成为调用列表的第一个/最后一个吗?

1 个答案:

答案 0 :(得分:0)

由于我了解到调用列表主要按订阅顺序发送,但不能保证,我现在使用KeyUp处理程序而不是OnTextChanged。感谢Sriram提示!