【发布时间】:2013-05-27 09:58:06
【问题描述】:
我是 WPF 的新手,正在尝试解开 RoutedCommands。 RoutedCommands 从命令源开始,比事件传播 vua 冒泡和隧道。
但是我可以停止这个过程吗?例如,我想设置 CanExecute = false 而不是停止事件传播。
感谢您的帮助!
【问题讨论】:
标签: wpf routed-commands
我是 WPF 的新手,正在尝试解开 RoutedCommands。 RoutedCommands 从命令源开始,比事件传播 vua 冒泡和隧道。
但是我可以停止这个过程吗?例如,我想设置 CanExecute = false 而不是停止事件传播。
感谢您的帮助!
【问题讨论】:
标签: wpf routed-commands
我想当你的CanExecute-Handler 将CanExecute 设置为false 时,我想你试图阻止RoutedCommand 冒泡可视化树?如果是,请尝试以下操作:
设置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/>
【讨论】: