【问题标题】:differences between routed events and attached events and what differences they make?路由事件和附加事件之间的区别以及它们有什么区别?
【发布时间】:2012-01-18 21:28:00
【问题描述】:

我只是在介绍 WPF 概念,我遇到了这些路由事件、依赖属性和附加事件。 我想我无法理解它们背后的概念以及为什么它们被调用来代替 .net 起源的方法?

【问题讨论】:

    标签: wpf xaml


    【解决方案1】:

    路由事件为元素树中的不同控件提供对事件做出反应的能力。

    例如,如果我们有一个包含StackPanelStackPanel 包含一个ButtonWindow,并且有人在按钮上按下鼠标键,则事件将按以下顺序触发:

    PreviewMouseDown on Window
    PreviewMouseDown on StackPanel
    PreviewMouseDown on Button
    MouseDown on Button
    MouseDown on StackPanel
    MouseDown on Window
    

    这些“预览”事件使用称为Tunneling 的行为。正常事件Bubble又起来了。

    如果将EventArgsHandled 属性设置为true,则隧道和冒泡将停止。隧道或冒泡称为路由策略

    这可以处理各种情况,例如:

    • 防止 StackPanel 的任何子元素接收鼠标按下事件。 (在StackPanel.PreviewMouseDown 上将Handled 设置为true)。
    • 处理尚未由任何其他控件处理的窗口上的按键 (Window.KeyDown)

    我建议在绝对必要之前不要调查Attached Events。附加事件的场景非常有限。附加事件也是路由事件。

    【讨论】:

      猜你喜欢
      • 2012-01-27
      • 1970-01-01
      • 1970-01-01
      • 2019-02-05
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      • 2014-03-12
      • 2011-02-11
      相关资源
      最近更新 更多