隧道 CommandBinding.previewcanexecute 事件有什么用?
并冒泡 CommandBinding.canexecute 事件??有什么用
隧道 CommandBinding.previewcanexecute 事件有什么用?
并冒泡 CommandBinding.canexecute 事件??有什么用
隧道和冒泡事件允许处理程序在多个元素之间共享,并被层次结构中更高的控件拦截。例如,给定以下 Xaml:
<StackPanel>
<Button Command="MyCommand" />
<Button Command="MyCommand" />
<Button Command="MyCommand" />
<Button Command="MyCommand" />
</StackPanel>
如果我想定义一个CommandBinding
会MyCommand
影响所有按钮的,我可以在StackPanel
. 当每个按钮尝试执行其命令时,事件将向上冒泡到StackPanel
- 这意味着我们只需要一个处理四个按钮的处理程序。如果我在根Window
级别放置一个处理程序,它将应用于我的应用程序中的每个按钮。
相反,隧道事件允许您在它到达触发它的控件之前拦截它。因此,例如,如果我想为整个.Window
CanExecute
false