【问题标题】:What is the use of tunneling the CommandBinding.previewcanexecute event ??隧道 CommandBinding.previewcanexecute 事件有什么用?
【发布时间】:2012-08-01 14:42:00
【问题描述】:

隧道 CommandBinding.previewcanexecute 事件有什么用?

并冒泡 CommandBinding.canexecute 事件??有什么用处

【问题讨论】:

    标签: wpf commandbinding routedcommand


    【解决方案1】:

    隧道和冒泡事件允许处理程序在多个元素之间共享,并被层次结构中更高的控件拦截。例如,给定以下 Xaml:

    <StackPanel>
       <Button Command="MyCommand" />
       <Button Command="MyCommand" />
       <Button Command="MyCommand" />
       <Button Command="MyCommand" />
    </StackPanel>
    

    如果我想为MyCommand 定义一个会影响所有按钮的CommandBinding,我可以在StackPanel 上定义它。当每个按钮尝试执行其命令时,事件将向上冒泡到StackPanel——这意味着我们只需要一个处理四个按钮的处理程序。如果我在根Window 级别放置一个处理程序,它将应用于我的应用程序中的每个 按钮。

    相反,隧道事件允许您在它到达触发它的控件之前拦截它。因此,例如,如果我想禁用整个Window 中的每个按钮的命令,我可以使用隧道事件来执行此操作,并且按钮总是会发现CanExecute 返回@987654329 @。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-07
      相关资源
      最近更新 更多