我在 RibbonTab 中有大约 5 个 RibbonGroups,每个功能区组包含大约 3-5 个命令。为了适应屏幕上的所有内容,WPF Ribbon 控件会自动将几个 RibbonGroups 折叠到下拉菜单中。到这里为止没有什么特别的。
现在我看到折叠的 RibbonGroups 中的命令的 CanExecute 事件在第一次打开下拉菜单之前不会触发。(这可能是为了提高性能 - 即除非任何命令可见,否则需要触发 CanExecute!?)
在我的应用程序中,逻辑是,如果在 RibbonGroup 中没有启用任何命令(即 CanExecute 为 false),则我们隐藏该 RibbonGroup。但除非所有 CanExecute 都被触发,否则我不知道启用了多少(或所有)命令。
这是 RibbonGroup 的限制还是设计使然?是否有任何解决方法可以手动执行所有 CanExecutes,至少一次,无论命令是否在折叠的 RibbonGroup 中。
顺便说一句,CommandManager.InvalidateRequerySuggested()
这里也无济于事。