У меня есть приложение WPF, меню которого использует командные возможности. Все подключено очень хорошо, и когда я нажимаю кнопки в меню, команды запускаются. Однако у меня возникают проблемы с получением статуса IsEnabled кнопки для соблюдения части CanExecute моих команд.
Одна из проблем - команды должны видеть, что вы делаете в пользовательском интерфейсе. Например, одна команда должна быть доступна только тогда, когда выбраны определенные элементы в ListBox, поэтому мне нужно получить ссылку на ListBox ... но, поскольку команда представлена в моей модели представления (шаблон MVVM), она не имеет доступ к пользовательскому интерфейсу (кстати, меню находится в одном пользовательском элементе управления [parent = mainwindow], а ListBox - в другом пользовательском элементе управления [parent = mainwindow]).
Кроме того, даже когда я жестко кодирую метод команды CanExecute, возвращающий значение false, свойство Enabled кнопки не изменяется ... команда не запускается, но не изменяется ... расстраивает. Я предполагаю, что мне нужно изменить / поднять событие CanExecuteChanged, но я не уверен, когда мне следует это делать (не могу найти хороший образец).
Обратная связь