我有一个Menu,层次 struct 中的每个MenuItem都将其Command属性设置为我定义的RoutedCommand.相关联的CommandBindingCanExecute的判断提供回调,CanExecute控制每个MenuItem的启用状态.

这个almost有效.菜单项最初会显示正确的启用和禁用状态.然而,当我的CanExecute回调使用的数据发生变化时,我需要命令从我的回调重新请求一个结果,以便在UI中反映这个新状态.

RoutedCommandCommandBinding上似乎没有任何公开的方法.

请注意,当我单击或键入控件时,会再次使用回调(我猜它是在输入时触发的,因为鼠标悬停不会导致刷新).

推荐答案

这不是本书中最漂亮的,但您可以使用CommandManager使所有commandbinding无效:

CommandManager.InvalidateRequerySuggested();

查看更多关于MSDN的信息

.net相关问答推荐

将多行参数传递给Power Shell中的DotNet Pack命令

xunit Assert.ThrowsAsync() 不能正常工作?

在生产中使用实体框架(代码优先)迁移

为什么 StyleCop 建议在方法或属性调用前加上this?

string.Format 如何处理空值?

为什么我得到 411 Length required 错误?

.NET 的 `Array.Sort()` 方法使用的排序算法是稳定的算法吗?

在 .NET C# 中存储加密密钥的最佳方式

为什么 .NET 中没有可序列化 XML 的字典?

获取当前方法的名称

获取类型的默认构造函数的最有效方法

为什么 System.Timers.Timer 能在 GC 中存活,而 System.Threading.Timer 不能?

Iif 在 C# 中等效

使用+运算符的字符串连接

了解 C# 中的协变和逆变接口

为什么要使用 C# 类 System.Random 而不是 System.Security.Cryptography.RandomNumberGenerator?

使用 C# 将时间跨度值转换为格式hh:mm Am/Pm

ConfigurationManager.AppSettings - 如何修改和保存?

无法添加对 dll 的引用

SqlParameter 已被另一个 SqlParameterCollection 包含 - using() {} 作弊吗?