Re[3]: Непонятное поведение WPF Шаблон MVVM
От: Mr.Delphist  
Дата: 05.03.21 09:40
Оценка: 15 (1)
Здравствуйте, varenikAA, Вы писали:

AA>самопальный System.Windows.Input.ICommand без излишних наворотов.


Т.е. свой самопал работает как надо, и только MVVM во всём виноват

На самом деле, для полного феншуя должны быть две вещи:
* валидатор canExecute
* событие "что-то поменялось, надо перевалидировать canExecute"

Ведь не смущает в winforms, что в случае изменения контента окна надо позвать InvalidateRect или что-то аналогичное дабы насильно вызвать перерисовку? Так и здесь: кнопка отрисована, статус при этом проверили — получили canExecute==false, нарисовали сереньким (или какой там шаблон для disabled-состояния сейчас задан у кнопки). Если после этого что-то поменялось в модели/вьюмодели и выражение canExecute может вычислиться как true, как кнопка про это узнает? Никак.

В уже упомянутом в предыдущих постах RelayCommand всё это есть из коробки, дёргаем метод RaiseCanExecuteChanged — и готово.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.