MVVM блокировка кнопки до валидации10.04.2025, 10:56. Показов 6449. Ответов 71
Метки нет (Все метки)
Добрый день.
Исходные данные: разработка в шаблоне MVVM, у некоего окна есть кнопка "ОК", к которой в xaml привязана команда из VM. Также на уровне VM делается валидация данных при помощи INotifyDataErrorInfo. При открытии окна кнопка "ОК" доступна для нажатия хотя дефолтные данные в окне не валидны. Кнопка блокируется если начать вводить не правильные данные, то есть кнопка реагирует только тогда, когда начинает работать механизм валидации. Вопрос в следующем: как при открытии окна сделать кнопку "ОК" недоступной для нажатия с сохранение её зависимости от CanExecute изменяемой при валидации? Добавлено через 5 минут Дополнительное пояснение. Допустим есть одно текстовое поле, которое не может быть пустым и эта проверка делается в VM, после чего устанавливается HasErrors, на который и реагирует кнопка. Но сразу после открытия окна поле пустое и если его не трогать оно также остаётся пустым (не валидным), но в этом случае HasErrors не устанавливается.
0
|
|
| 10.04.2025, 10:56 | |
|
Ответы с готовыми решениями:
71
Обработка валидации данных в слое VM (MVVM)
|
|
|
|||
| 11.04.2025, 14:32 | |||
|
З.Ы.
HasErrors как-то не так тут работает... Команда SaveCommand активна всегда, при любом вводе имени или его отсутствия вообще..Добавлено через 27 секунд Добавлено через 3 минуты
1
|
|||
|
|
|
| 11.04.2025, 14:34 | |
|
0
|
|
|
|
||||||
| 11.04.2025, 14:50 | ||||||
|
wizard41, Хмммм, нужно взять на заметку
![]()
1
|
||||||
| 11.04.2025, 14:51 [ТС] | ||||
![]()
0
|
||||
|
|
|
| 11.04.2025, 14:52 | |
|
wizard41, А, оно там было, чёт не увидел
0
|
|
|
|
|||||||||||
| 11.04.2025, 14:59 | |||||||||||
|
Uswer, Чего-то это мне не нравится -
ObservableObject...Может так лучше?
Uswer, И потом в свойствах вот так делать
0
|
|||||||||||
|
|
|
| 11.04.2025, 15:01 | |
|
0
|
|
| 11.04.2025, 15:15 [ТС] | ||||
|
Добавлено через 2 минуты Если в поле Name что-то вбить, а потом стереть, то валидация отработает. НО если не трогать ничего то моделька остаётся невалидной.
0
|
||||
|
|
||
| 11.04.2025, 15:21 | ||
![]() Добавлено через 1 минуту Uswer, Я уже свой RelayCommand() прикрутил, всё равно не работает...
0
|
||
| 11.04.2025, 15:24 [ТС] | ||
|
Andrey-MSK, я пока в свои VM не встраивал ViewContext. У меня VM связываются с View через делегаты. Но идея понятная.
Добавлено через 2 минуты
0
|
||
|
|
|||||||
| 11.04.2025, 15:29 | |||||||
0
|
|||||||
|
|
|
| 11.04.2025, 15:39 | |
|
0
|
|
|
1596 / 601 / 185
Регистрация: 05.12.2015
Сообщений: 970
|
||
| 11.04.2025, 16:48 | ||
|
Валидацию проходит свойство Name а не ваша модель и проходит она только в одном месте -в Name.set. Еще раз крупными буквами: ЧТОБ СРАБОТАЛА ВАЛИДАЦИЯ НУЖНО ВЫЗВАТЬ SETTER СВОЙСТВА NAME. Если валидируется Name, то ему и надо передать значение из модели - В КОСТРУКТОРЕ. Напишите последней строкой в конструкторе Name=_model.Name; Дальше все это надо выбросить и переделать по нормальному.
0
|
||
| 11.04.2025, 16:48 | |
|
Избежать одновременного выполнения LostFocus и команды кнопки MVVM
Добавление кнопки в форме с кнопки и смена фона новой кнопки Временное отключение валидации Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|