我想请教您的意见。
我正在处理的应用程序具有docking control
并且应该支持使用不同的“文档”。因此可以同时windows
打开多个(选项卡)。
每个都可以承载不同的内容。我提到的“文档”可以是文本文件、excel 样式表或正在开发此应用程序的主控件(地理数据可视化)。
我正在使用MVVM
模式和 MVVM Light 库。注意:我对 Excel 电子表格有第三方控件。
现在我有一个menu bar
和一个toolbar
我有共同menuitems
(in menubar
)/按钮(in toolbar
)的地方,比如“保存”、“剪切”、“复制”等......当您在选项卡之间切换时,“保存”按钮应该调用适当的保存功能。
剪切/复制/粘贴也是如此:
在带有文本文档的选项卡中 - 剪切/复制/粘贴应该对文本进行操作(为此有 wpf 内置命令)。
在主控件中时 - 它应该与图形元素一起使用(我将不得不实现这些)
在电子表格中时 - 它应该与电子表格控件的随附第三方命令一起使用。
此外,可以有一个选项卡选择了一些文本 - 因此当切换到此选项卡时应该启用用于剪切/复制的菜单项/按钮,而其他一些选项卡没有选择图形元素,因此用于剪切/复制的菜单项/按钮应该切换到此选项卡时被禁用。
通过保存command
,我可以想象一种可能的方法,但我仍然不确定这是否是实现它的好方法:RelayCommand
在 MainWindowViewModel 中有一个
public ICommand SaveCommand
{
get
{
if (_saveCommand == null)
{
_saveCommand = new RelayCommand(() => this.SaveFile());
}
return _saveCommand;
}
}
并且该SaveFile()
方法将调用选项卡上的其他一些“保存方法” datacontext
(selected
这将是相应“文档”类型的视图模型)。
但是我不知道如何启用/禁用保存按钮/菜单项,而且我对如何实现不同的剪切/复制/粘贴功能一无所知。
我为问题的长度道歉。也许我可以问:
“如何根据选择/激活应用程序的哪个部分将不同的剪切/复制/粘贴命令绑定到按钮?”。
但我觉得我正在努力实现的附加背景将有助于回答这个问题。