我遇到了类似MVVM的情况(不使用任何框架),其中有一个带有工具栏和文档区域的主窗口。这些文档具有命令绑定(bind)(例如撤消和重做)。当键盘焦点位于文档之外时,它不知道如何执行任何命令,因此按钮被禁用。
我想做的是添加一种机制,使主窗口将命令转发到 Activity 文档(如果有的话)。使用CommandManager.AddPreviewCanExecuteHandler
我可以在主窗口中获取事件,但是我不知道如何将它们发送到子文档-我尝试了e.CanExecute = e.Command.CanExecute(CurrentDocument)
,但是最后只是再次重新调用PreviewCanExecuteHandler和子级的CanExecute
处理程序不被调用。
如何将任意ICommand发送到子控件?
最佳答案
答案是here-调用CurrentDocument.RaiseEvent(e)
,确保通过注册了CommandManager.AddCanExecuteHandler
(不是AddPreviewCanExecuteHandler
)的处理程序来执行此操作。并确保检查无限递归。