【发布时间】:2017-06-16 18:11:53
【问题描述】:
我在我的应用程序中遇到了 MVVM。我有一个 TabControl,它的每个 Tab 都承载一个允许以某种方式编辑文件的控件。例如,文本文件或图像。每个控件都绑定到 ViewModel 区域中的一个类(如图所示)。我也有 RoutedUICommands。其中一个命令是 WordWrap,仅在文本文件的情况下才有意义。此命令用于 MenuItem 或 Button 等。我只想在文本控件是此命令的目标时启用它。如何根据MVVM正确进行?
更多细节:
Window 的 XAML 有:
<Window.CommandBindings>
<CommandBinding Command="local:EditorCommands.WordWrap"
Executed="WordWrapExecuted"
CanExecute="CommandCanBeExecutedWhenAnythingIsOpen"/>
</Window.CommandBindings>
这样使用菜单项:
<MenuItem Command="local:EditorCommands.WordWrap"/>
第一件事是 Executed 和 CanExecute 事件处理程序:它们在 Window 类中,尽管我理解如果 MVVM 是,逻辑应该只在 ViewModel 中。
更重要的是,这些函数中的发送者是一个窗口的实例。为什么它不是命令的目标?
我应该为每个命令编写自己的 RoutedUICommand 继承者吗?
【问题讨论】:
标签: wpf mvvm routed-commands