可以在上下文菜单打开时执行 ICommand

Posted

技术标签:

【中文标题】可以在上下文菜单打开时执行 ICommand【英文标题】:Can Execute of a ICommand while a Context menu open 【发布时间】:2013-08-09 17:08:05 【问题描述】:

一个控件有它的ContextMenu,它的MenuItem 绑定到一个ICommand。 ICommand 的 Can Execute 有一些代码可以启用和禁用MenuItem。这会在加载并检查 Can Execute 时命中,但在打开 ContexMenu 时会命中,并且每次打开 ContextMenu 时都需要命中(检查)。

<Border>
    <Border.ContextMenu> 
       <ContextMenu> 
           <MenuItem Command="Binding SaveCommand, Source=StaticResource vm" CommandParameter="Binding" Header="Menu1" />
       </ContextMenu> 
    </Border.ContextMenu>
</Border>

怎么可能做到这一点。有什么想法吗?

【问题讨论】:

@PoweredByOrange: 请检查上面的代码 【参考方案1】:

您应该从 ViewModel 触发事件 ICommand.CanExecuteChanged(),这将导致 Control 从 ViewModel 调用 CanExecute。

【讨论】:

这可能行得通,但在我的情况下是行不通的.. 任何通用的方法来实现这一点? 这里缺少一些信息:你什么时候调用CanExecuteChanged? @Sankarann 希望在上下文菜单打开时对其进行评估(我也是如此)。

以上是关于可以在上下文菜单打开时执行 ICommand的主要内容,如果未能解决你的问题,请参考以下文章

如何避免 jQuery mmenu 在打开时滚动到顶部

当应用程序未打开时,可以在 Firebase 消息服务中完成哪些任务?

jQuery ajax 混合 html/js <script> 避免 <script> 打开时丢失上下文

SwiftUI 检测 contextMenu 何时打开

vim打开时窗口大小怎么调整,在_vimrc中怎么设置?

当 li 列表是绝对的并且下拉菜单打开时,是不是可以强制底部的最后一个 li 菜单内容?