Я хотел бы попросить вас совета.WPF Привязать разные команды к кнопке/menuitem
Приложение, в котором я работаю, имеет docking control
и должно поддерживать работу с различными «документами». Поэтому одновременно может открываться несколько windows
(вкладки).
Каждый из них может содержать различное содержимое. «Документы», которые я упоминал, могут быть текстовым файлом, листом стиля excel или основным элементом управления, разрабатываемым этим приложением (визуализация географических данных).
Я использую шаблон MVVM
и библиотеку MVVM Light. Примечание. У меня есть сторонний элемент управления для таблиц Excel.
Теперь у меня есть menu bar
и toolbar
, где у меня есть общий menuitems
(в menubar
)/кнопки (в toolbar
), как «сохранить», «вырезать», «копировать» и т.д ... При переключении между между вкладками , кнопка «сохранить» должна вызывать соответствующие функции сохранения.
То же самое касается и вырезать/копировать/вставить:
Когда на вкладке с текстом документа - вырезать/копировать/вставить, должен работать с текстом (есть МОФ встроенные команды для этого).
Когда в главном управления - Он должен работать с графическими элементами (у меня будет реализовывать эти)
Когда в электронной таблице - Он должен работать с приложенными командами третьих сторон для управления электронных таблиц.
Кроме того, может быть вкладка, которая имеет некоторый текст, выбранный - таким образом, необходимо вывести кнопку/для вырезать/копировать должно быть включено при переключении на эту вкладку, в то время как некоторые другие вкладки не имеют графических элементов, выбранных таким образом, MenuItem/кнопка для вырезания/копирования должна быть отключена при переключении на эту вкладку.
С спасти command
я могу представить один из возможных способов сделать это, но все же, я не уверен, является ли это хороший способ ее реализации: Есть RelayCommand
в MainWindowViewModel
public ICommand SaveCommand
{
get
{
if (_saveCommand == null)
{
_saveCommand = new RelayCommand(() => this.SaveFile());
}
return _saveCommand;
}
}
и SaveFile()
метод мог бы вызвать некоторый другой «метод сохранения» на вкладке datacontext
вкладки selected
(которая была бы моделью просмотра для соответствующего типа документа).
Однако я не знаю, как сделать включение/выключение кнопки save/menuitem, и я не знаю, как достичь различных функций cut/copy/paste.
Приносим извинения за длительность вопроса. Может быть, я мог бы только что спросил:
«Как вы привязываете разные команды вырезания/копирования/вставки к кнопкам в зависимости от того, какая часть приложения выбрана/активна?».
Но я чувствовал, что добавленный контекст того, что я пытаюсь достичь, поможет ответить на вопрос.
Я бы сделал, чтобы MainViewModel сохранил коллекцию других режимов просмотра и добавил свойство для текущей выбранной модели viewmodel. Затем команда save просто переадресовывает вызовы в текущие выбранные режимы отображения save command/method. – keft