【发布时间】:2012-01-18 21:28:00
【问题描述】:
我只是在介绍 WPF 概念,我遇到了这些路由事件、依赖属性和附加事件。 我想我无法理解它们背后的概念以及为什么它们被调用来代替 .net 起源的方法?
【问题讨论】:
我只是在介绍 WPF 概念,我遇到了这些路由事件、依赖属性和附加事件。 我想我无法理解它们背后的概念以及为什么它们被调用来代替 .net 起源的方法?
【问题讨论】:
路由事件为元素树中的不同控件提供对事件做出反应的能力。
例如,如果我们有一个包含StackPanel 的StackPanel 包含一个Button 的Window,并且有人在按钮上按下鼠标键,则事件将按以下顺序触发:
PreviewMouseDown on Window
PreviewMouseDown on StackPanel
PreviewMouseDown on Button
MouseDown on Button
MouseDown on StackPanel
MouseDown on Window
这些“预览”事件使用称为Tunneling 的行为。正常事件Bubble又起来了。
如果将EventArgs 的Handled 属性设置为true,则隧道和冒泡将停止。隧道或冒泡称为路由策略。
这可以处理各种情况,例如:
StackPanel.PreviewMouseDown 上将Handled 设置为true)。Window.KeyDown)我建议在绝对必要之前不要调查Attached Events。附加事件的场景非常有限。附加事件也是路由事件。
【讨论】: