RoutedCommands传播策略

时间:2013-05-27 09:58:06

标签: wpf routed-commands

我是WPF的新手,并且正在尝试解密RoutedCommands。 RoutedCommands从命令源开始,而不是传播vua冒泡和隧道传播。

但我可以停止这个过程吗?例如,我想设置CanExecute = false,而不是停止事件传播。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我想,当RoutedCommand - 处理程序将CanExecute设置为CanExecute时,您是否尝试阻止false冒泡视觉树?如果是,请尝试以下操作:

设置e.Handled = true。确保CommandTarget设置正确,以便真正调用CanExecute - 处理程序。 如果您将命令放在ContextMenu中,这一点很重要。如果未指定CommandTarget,则WPF将采用焦点元素,并且不会始终调用CanExecute - 处理程序,因此可能由另一个处理程序解释。 像下面这样的东西可以完成这项工作:

 <ContextMenu>
  <MenuItem Command="DesiredCommand" CommandTarget="{Binding PlacementTarget,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ContextMenu}}" .../>
  ...
 </ContextMenu/>