WPF:ContextMenu项绑定到命令,只有在从另一个源调用命令后才启用。为什么会这样?

WPF:ContextMenu项绑定到命令,只有在从另一个源调用命令后才启用。为什么会这样?,wpf,command,contextmenu,Wpf,Command,Contextmenu,我有一个ContextMenu,它的所有项目都绑定到命令,并且在从另一个源调用任何命令之后正确地启用/禁用,但在此之前,它们都被禁用。因此,如果我运行应用程序,所有菜单项都将被禁用,但如果我从另一个源(例如按钮)调用任何绑定命令,它们将与CanExecute代码同步。我不知道如何调试这个。任何想法都会有帮助 有时需要强制WPF重新评估命令是否已启用 在代码的某个地方,添加对以下内容的调用: CommandManager.InvalidateRequerySuggested(); 看看这是否有帮

我有一个ContextMenu,它的所有项目都绑定到命令,并且在从另一个源调用任何命令之后正确地启用/禁用,但在此之前,它们都被禁用。因此,如果我运行应用程序,所有菜单项都将被禁用,但如果我从另一个源(例如按钮)调用任何绑定命令,它们将与CanExecute代码同步。我不知道如何调试这个。任何想法都会有帮助

有时需要强制WPF重新评估命令是否已启用

在代码的某个地方,添加对以下内容的调用:

CommandManager.InvalidateRequerySuggested();

看看这是否有帮助。

有时您需要强制WPF重新评估命令是否已启用

在代码的某个地方,添加对以下内容的调用:

CommandManager.InvalidateRequerySuggested();

看看这是否有帮助。

在窗口的主焦点范围中没有焦点元素的情况下,这似乎是一个bug。 解决方法是将MenuItem的CommandTarget绑定到主窗口

以下是周马可的回答:


似乎是一个bug,窗口的主焦点范围中没有焦点元素。 解决方法是将MenuItem的CommandTarget绑定到主窗口

以下是周马可的回答:



谢谢阿德尔,感谢你抽出时间。我试过很多地方,但都不开心。谢谢阿德尔,感谢你抽出时间。我试过很多地方,但都不开心。这很有效。但是XAML编辑器显示一个虚假的“对象引用未设置为对象的实例”。一旦编译并运行,它就可以正常工作,但最好不要在编辑器中显示错误。有办法解决吗?这很有效。但是XAML编辑器显示一个虚假的“对象引用未设置为对象的实例”。一旦编译并运行,它就可以正常工作,但最好不要在编辑器中显示错误。有办法解决吗?可能是重复的可能是重复的