1
隧道CommandBinding.previewcanexecute事件的用途是什么?什么是使用隧道CommandBinding.previewcanexecute事件?
和冒泡CommandBinding.canexecute事件?它如何有用
隧道CommandBinding.previewcanexecute事件的用途是什么?什么是使用隧道CommandBinding.previewcanexecute事件?
和冒泡CommandBinding.canexecute事件?它如何有用
隧道和冒泡事件允许处理程序在多个元素之间共享,并被层次结构中较高级的控件拦截。例如,假设下面的XAML代码:
<StackPanel>
<Button Command="MyCommand" />
<Button Command="MyCommand" />
<Button Command="MyCommand" />
<Button Command="MyCommand" />
</StackPanel>
如果我要定义MyCommand
一个CommandBinding
,这将影响所有的按钮,我可以把它定义在StackPanel
。当每个按钮试图执行它的命令时,事件会向上冒泡到StackPanel
--这意味着我们只需要一个处理四个按钮的处理器。如果我在根目录Window
级别放置了一个处理程序,它将应用于我的应用程序中每个按钮的。
相反,隧道事件允许您在触发控件之前拦截它。因此,举例来说,如果我在我的整个Window
要禁用为每个按钮的命令,我可以用一个隧道事件做到这一点,按钮总是发现CanExecute
回报false
。