我是 WPF 的新手,正在尝试解开 RoutedCommands。RoutedCommands 从命令源开始,比事件传播 vua 冒泡和隧道。
但是我可以停止这个过程吗?例如,我想设置 CanExecute = false 而不是停止事件传播。
谢谢你的帮助!
我是 WPF 的新手,正在尝试解开 RoutedCommands。RoutedCommands 从命令源开始,比事件传播 vua 冒泡和隧道。
但是我可以停止这个过程吗?例如,我想设置 CanExecute = false 而不是停止事件传播。
谢谢你的帮助!
我想当RoutedCommand
您的CanExecute
-Handler 设置CanExecute
为false
? 如果是,请尝试以下操作:
设置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/>