Информация об изменениях

Сообщение Re: [WPF] MVVM, Валидация от 20.04.2020 15:34

Изменено 20.04.2020 15:35 Kolesiki

Re: [WPF] MVVM, Валидация
Здравствуйте, karbofos42, Вы писали:

K>MVVM, Валидация

K>... везде только простейшие примеры, показывающие как всё легко и просто.


В этом и есть вся суть теоретиков, покрытых академической пылью кабинетов — рисовать на бумажках свои красивые теории и расписывать, какие мы все дураки, что не следуем дословно их видению идеальных программ! Это на чертежах можно смело "отделять ГУЙ от логики" одной красной линией, на деле там 5 перпендикулярных линий и круг в форме зайчика.

На практике лучше не выпендриваться и иногда даже костылить. Пример насвкидку по изменению "инт" проперти:

{тестовый контрол}--- на событие "изменилось значение" тупо хардкодим проверку, что строка вообще какой-то вменяемый int. Если нет — подсвечиваем рамку красным.
В закрытии формы смело берём отвалидаченное выражение и конвертим в инт — ошибок уже не будет. А теперь присваиваем инт низлежащей проперти (да-да, руками!). Если у проперти есть доп. валидация (например, на значения минут), ловим исключение и красиво показываем юзеру — пусть редактирует заново.
В данной схеме вообще нет никаких MVVM! Ибо оверхэд и тухлые теории. Есть визуальная форма + модель, совмещённая с вьюмоделью. Таким образом, вместо трёх сущностей у нас всего две и обе вменяемо управляемы.
Re: [WPF] MVVM, Валидация
Здравствуйте, karbofos42, Вы писали:

K>MVVM, Валидация

K>... везде только простейшие примеры, показывающие как всё легко и просто.


В этом и есть вся суть теоретиков, покрытых академической пылью кабинетов — рисовать на бумажках свои красивые теории и расписывать, какие мы все дураки, что не следуем дословно их видению идеальных программ! Это на чертежах можно смело "отделять ГУЙ от логики" одной красной линией, на деле там 5 перпендикулярных линий и круг в форме зайчика.

На практике лучше не выпендриваться и иногда даже костылить. Пример насвкидку по изменению "инт" проперти:

{текстовый контрол}--- на событие "изменилось значение" тупо хардкодим проверку, что строка вообще какой-то вменяемый int. Если нет — подсвечиваем рамку красным.
В закрытии формы смело берём отвалидаченное выражение и конвертим в инт — ошибок уже не будет. А теперь присваиваем инт низлежащей проперти (да-да, руками!). Если у проперти есть доп. валидация (например, на значения минут), ловим исключение и красиво показываем юзеру — пусть редактирует заново.
В данной схеме вообще нет никаких MVVM! Ибо оверхэд и тухлые теории. Есть визуальная форма + модель, совмещённая с вьюмоделью. Таким образом, вместо трёх сущностей у нас всего две и обе вменяемо управляемы.