我有一个ContextMenu,其项目都绑定到命令,并在从另一个源调用ANY Command之后正确启用/禁用,但在此之前,它们都被禁用。因此,如果我运行应用程序,则禁用所有MenuItem,但如果我从另一个源(例如按钮)调用任何绑定命令,它们将与CanExecute代码同步。我不知道如何调试这个。任何想法都会有所帮助!?!
答案 0 :(得分:4)
似乎是窗口主要焦点范围内没有聚焦元素的错误。 解决方法是将MenuItem的CommandTarget绑定到主窗口。
Marco Zhou的回答: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/7bd75a7c-eab4-4f3a-967b-94a9534a7455
<Window.ContextMenu>
<ContextMenu >
<ContextMenu.Items>
<MenuItem Command="ApplicationCommands.Open"
CommandTarget="{Binding Path=PlacementTarget,RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}}}"/>
</ContextMenu.Items>
</ContextMenu>
</Window.ContextMenu>
答案 1 :(得分:0)
有时您需要强制WPF重新评估命令是否已启用。
在代码中的某处,添加一个对:
的调用CommandManager.InvalidateRequerySuggested();
看看是否有帮助。