我在上下文菜单中使用自定义RoutedCommand。该命令的定义如下:
public static readonly RoutedCommand RoutedAddMainHeading = new RoutedCommand();
可以这样访问:
<ContextMenu>
<MenuItem Header="Add Main Heading" Command="local:JurisdictionVM.RoutedAddMainHeading" />
</ContextMenu>
它工作正常,除非我的程序启动,命令被禁用。单击窗口中的文本框后,它将变为启用状态。
如果我使用自定义ICommand实现(CanExecute总是返回true),则不会发生这种情况,但命令不会被路由。
我试图调用CommandManager.InvalidateRequerySuggested,但这似乎没有做任何事情。
我使用命令接收器来定义命令绑定并将其链接到我的ViewModel,这可能导致问题。我正在使用我在此处找到的实现:http://www.codeproject.com/KB/WPF/VMCommanding.aspx
更新:看起来自定义命令绑定不是问题。我尝试了一个标准的CommandBinding链接到代码隐藏方法,并有同样的问题。 CommandBinding的定义如下:
<CommandBinding Command="local:JurisdictionVM.RoutedAddMainHeading" CanExecute="Foo_CanExecute" Executed="Foo_Executed"/>
似乎这是ManuItem独有的问题。如果我在一个按钮中使用此命令,我就没有这个问题。
是否有其他方法可以强制重新评估CanExecute?
或者让RoutedCommand默认为启用(或者编写自定义方式)的方法?
答案 0 :(得分:0)
答案 1 :(得分:0)