我想问你一个建议。WPF将不同的命令绑定到按钮/ menuitem
我正在使用的应用程序有docking control
,应支持使用不同的“文档”。因此可以同时打开多个windows
(选项卡)。
每个可以承载不同的内容。我提到的“文档”可以是文本文件, 是Excel风格的表格或此应用程序正在开发的主要控件(地理数据可视化)。
我正在使用MVVM
模式和MVVM Light库。注意:我有一个Excel电子表格的第三方控件。
现在我有一个menu bar
和toolbar
在那里我有共同menuitems
(在menubar
)/按钮(在toolbar
)像“保存”,“剪切”,“复制”等等...当你在标签之间切换,'保存'按钮应该调用相应的保存功能。
这同样适用于剪切/复制/粘贴:
当与文本文档标签 - 剪切/复制/粘贴应该用文本操作(有WPF的内置命令为这个)。
当主控制 - 它应与图形元素的工作(我将不得不实施这些)
当电子表格 - 它应该与电子表格控制的封闭式第三方命令的工作。
此外,可以是具有选定的一些文本标签 - 用于剪切/复制从而菜单项/按钮时切换到这个标签应启用,而另一些卡具有这样选择的菜单项没有图形元素/切换到此选项卡时,应禁用剪切/复制的按钮。
随着保存command
我能想象一个可能的方式做到这一点,不过,我不知道它是否是实现它的好方法:有一个在MainWindowViewModel
RelayCommand
public ICommand SaveCommand
{
get
{
if (_saveCommand == null)
{
_saveCommand = new RelayCommand(() => this.SaveFile());
}
return _saveCommand;
}
}
和SaveFile()
方法会在selected
选项卡的datacontext
(这将是相应的“文档”类型的视图模型)上调用其他“保存方法”。
但是,我不知道如何启用/禁用保存按钮/ menuitem,我对如何实现不同的剪切/复制/粘贴功能无能为力。
对于问题的长度,我表示歉意。也许我可以问一下:
“如何根据应用程序的哪一部分被选中/激活,将不同的剪切/复制/粘贴命令绑定到按钮上?”。
但我觉得我试图达到的附加背景将有助于回答这个问题。
我会让MainViewModel拥有其他viewmodels的集合,并为当前选定的viewmodel添加一个属性。然后,save命令只是将调用转发给当前选定的viewmodels保存命令/方法。 – keft