Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# RoutedCommand默认为无法执行_C#_Wpf - Fatal编程技术网

C# 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

我正在上下文菜单中使用自定义RoutedCommand。命令的定义如下:

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的方法(或者一种写入自定义命令的方法)?

尝试调用。

看起来这与此处的问题相同:

解决方案是在窗口构造函数中设置焦点