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