控件的ContextMenu
和MenuItem
绑定到ICommand
。ICommand的Can Execute有一些代码可以启用和禁用MenuItem
。它在加载时命中并检查是否可以执行,但在打开ContexMenu
时可能命中,并且在打开ContextMenu
时每次都需要命中(检查)。
<Border>
<Border.ContextMenu>
<ContextMenu>
<MenuItem Command="{Binding SaveCommand, Source={StaticResource vm}}" CommandParameter="{Binding}" Header="Menu1" />
</ContextMenu>
</Border.ContextMenu>
</Border>
怎么能做到这一点。知道吗?
您应该从ViewModel触发事件ICommand.CanExecuteChanged(),这将导致控件从ViewModel调用CanExecute。