C# RoutedCommand默认为无法执行
我正在上下文菜单中使用自定义RoutedCommand。命令的定义如下:C# RoutedCommand默认为无法执行,c#,wpf,C#,Wpf,我正在上下文菜单中使用自定义RoutedCommand。命令的定义如下: public static readonly RoutedCommand RoutedAddMainHeading = new RoutedCommand(); <ContextMenu> <MenuItem Header="Add Main Heading" Command="local:JurisdictionVM.RoutedAddMainHeading" /> </Conte
public static readonly RoutedCommand RoutedAddMainHeading = new RoutedCommand();
<ContextMenu>
<MenuItem Header="Add Main Heading" Command="local:JurisdictionVM.RoutedAddMainHeading" />
</ContextMenu>
它的访问方式如下:
public static readonly RoutedCommand RoutedAddMainHeading = new RoutedCommand();
<ContextMenu>
<MenuItem Header="Add Main Heading" Command="local:JurisdictionVM.RoutedAddMainHeading" />
</ContextMenu>
它工作正常,除非我的程序启动时,命令被禁用。单击窗口中的文本框后,它将被启用
如果使用自定义ICommand实现(CanExecute始终返回true),则不会发生这种情况,但不会路由命令
我试图给CommandManager.InvalidateRequest打电话,但这似乎没有任何作用
我正在使用命令接收器定义命令绑定并将其链接到我的ViewModel,这可能是导致问题的原因。我正在使用我在这里找到的一个实现:
更新:看起来问题不在于自定义命令绑定。我尝试了一个链接到代码隐藏方法的标准CommandBinding,但遇到了同样的问题。CommandBinding的定义如下:
<CommandBinding Command="local:JurisdictionVM.RoutedAddMainHeading" CanExecute="Foo_CanExecute" Executed="Foo_Executed"/>
这似乎是ManuItem独有的问题。如果在按钮中使用此命令,则不会出现此问题
是否有其他方法强制重新评估CanExecute
或者一种将RoutedCommand默认设置为enabled的方法(或者一种写入自定义命令的方法)?尝试调用。看起来这与此处的问题相同: 解决方案是在窗口构造函数中设置焦点