我想問你一個建議。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