路由事件和附加事件之间的差异以及它们之间的差异?

时间:2012-01-18 13:02:29

标签: wpf xaml

我正在浏览WPF概念,我遇到了这些路由事件,依赖项属性和附加事件。 我想我无法理解它们背后的概念以及它们为什么被用来代替.net的方法?

1 个答案:

答案 0 :(得分:12)

路由事件使元素树中的不同控件能够对事件做出反应。

例如,如果我们的Window包含StackPanel,其中包含Button并且有人按下按钮上的鼠标键,则会按以下顺序触发事件:

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

这些“预览”事件使用名为Tunneling的行为。正常事件Bubble再次上升。

如果将Handled的{​​{1}}属性设置为EventArgs,隧道和冒泡将停止。隧道或冒泡称为路由策略

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

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

我建议不要研究Attached Events,直到这变得绝对必要。附加事件的场景非常有限。附加事件也是路由事件。