我遇到了类似MVVM的情况(不使用任何框架),其中有一个带有工具栏和文档区域的主窗口。这些文档具有命令绑定(bind)(例如撤消和重做)。当键盘焦点位于文档之外时,它不知道如何执行任何命令,因此按钮被禁用。

我想做的是添加一种机制,使主窗口将命令转发到 Activity 文档(如果有的话)。使用CommandManager.AddPreviewCanExecuteHandler我可以在主窗口中获取事件,但是我不知道如何将它们发送到子文档-我尝试了e.CanExecute = e.Command.CanExecute(CurrentDocument),但是最后只是再次重新调用PreviewCanExecuteHandler和子级的CanExecute处理程序不被调用。

如何将任意ICommand发送到子控件?

最佳答案

答案是here-调用CurrentDocument.RaiseEvent(e),确保通过注册了CommandManager.AddCanExecuteHandler(不是AddPreviewCanExecuteHandler)的处理程序来执行此操作。并确保检查无限递归。

08-26 19:05
查看更多