Wpf 路由命令传播策略
我是WPF的新手,正在尝试取消发送路由命令。 RoutedCommands从命令源开始,然后通过气泡和隧道传播事件 但是我可以停止这个过程吗?例如,我希望设置CanExecute=false,然后停止事件传播Wpf 路由命令传播策略,wpf,routed-commands,Wpf,Routed Commands,我是WPF的新手,正在尝试取消发送路由命令。 RoutedCommands从命令源开始,然后通过气泡和隧道传播事件 但是我可以停止这个过程吗?例如,我希望设置CanExecute=false,然后停止事件传播 谢谢你的帮助 我想当CanExecute-处理程序将CanExecute设置为false时,您试图阻止RoutedCommand在可视化树中冒泡?如果是,请尝试以下操作: 设置e.Handled=true。确保CommandTarget设置正确,以便真正调用CanExecute-处理程序。
谢谢你的帮助 我想当
CanExecute
-处理程序将CanExecute
设置为false
时,您试图阻止RoutedCommand
在可视化树中冒泡?如果是,请尝试以下操作:
设置e.Handled=true
。确保CommandTarget
设置正确,以便真正调用CanExecute
-处理程序。
如果将命令放在上下文菜单中,这一点很重要。如果未指定任何CommandTarget
,则WPF将获取焦点元素,并且不会始终调用您的CanExecute
-处理程序,因此可能会由另一个处理程序进行解释。
类似于以下内容的操作将完成此工作:
<ContextMenu>
<MenuItem Command="DesiredCommand" CommandTarget="{Binding PlacementTarget,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ContextMenu}}" .../>
...
</ContextMenu/>
...