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