1

我是 WPF 的新手,正在尝试解开 RoutedCommands。RoutedCommands 从命令源开始,比事件传播 vua 冒泡和隧道。

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

谢谢你的帮助!

4

1 回答 1

0

我想当RoutedCommand您的CanExecute-Handler 设置CanExecutefalse? 如果是,请尝试以下操作:

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

 <ContextMenu>
  <MenuItem Command="DesiredCommand" CommandTarget="{Binding PlacementTarget,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ContextMenu}}" .../>
  ...
 </ContextMenu/>
于 2013-11-13T09:14:34.290 回答