wpf - 在 WPF 中,如何将命令转发给子控件?

标签 wpf mvvm

我有一个类似 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/

相关文章:

c# - 如何在 TextBlock 和 ProgressBar 中显示进度?

silverlight - 避免第二次点击 silverlight 按钮 MVVM

c# - 使用 MVVM Light 在 WP7 项目中抛出 UnauthorizedAccessException(无效的跨线程访问)

WPF 将 ICommand 绑定(bind)到事件 (FrameworkElement.Unloaded)

c# - 在接口(interface)中传递方法

WPF:为什么我不应该在 ControlTemplate 中使用 {TemplateBinding Margin} - Margin 是否仅适用于元素的容器?

c# - 实现代码问题

wpf - 在 try catch c# 中处理 AccessViolation 异常

c# - 如何使包含 ItemsControl 的 WPF 网格具有相同大小的列

c# - c#中的按键事件找出按下的键