MVVM - Проверка

Мы пытаемся выяснить валидацию в mvvm, выполняя валидацию в бизнес-логике или модели. Я реализовал проверку по типу исключения в нашей бизнес-логике - упрощенную схему можно найти здесь: alt text

Если у нас есть много входов, которые независимы друг от друга, проблем нет, генерируется исключение, текстовое поле улавливает его и отмечает красную границу для каждого неправильного входа. Однако когда у нас есть зависимые ценности, у нас проблемы. например,

  • Value1 и Value2 в модели не должны совпадать, поэтому у нас есть функция проверки для каждого из тех, кто ищет равное значение, и генерирует исключение, если это произойдет

  • сейчас, если мы установим Value1 в 0 и Value2 равным 1, все в порядке

  • Value1 устанавливается в графическом интерфейсе пользователя на 1 -> это значение помечается красным, потому что проверка других значений не запускается, поэтому значение Value2 в графическом интерфейсе не помечается как ошибочное

  • Value2 устанавливается в 2 в графическом интерфейсе, теперь мы достигли допустимого состояния, но только Value2 проверяется, поэтому Value1 по-прежнему помечается как ошибочный

Есть ли общий шаблон для решения этой проблемы? мы не хотим вводить зависимость в графическом интерфейсе пользователя между двумя текстовыми полями, потому что эта логика должна присутствовать только на уровне бизнес-логики. манни


[очистка, удален ненужный шаг]


15.11.2010 - Часть 2

хорошо, здесь большое переосмысление, мы переходим на уровень бизнес-логики. вот наша текущая запланированная конфигурация: alt text (изображение здесь немного уменьшено, откройте его в отдельном окне, чтобы просмотреть в полном размере) все более или менее ясно, за исключением того, как уведомить все модели представления / клоны моделей разных редакторов, если модель данных в рамках бизнес-логики изменится. один из способов сделать это - отслеживать клонированные модели в бизнес-логике, которая их создает. Когда модель данных изменяется с помощью бизнес-логики commit (), все другие зарегистрированные клоны модели могут быть уведомлены об изменениях и распространять их дальше. в качестве альтернативы бизнес-логика может публиковать событие, на которое подписаны все модели представления, чтобы они также получали изменения - может ли кто-нибудь подсказать мне, что лучше?

Еще раз спасибо за помощь, извините, я так запутался; )

16
задан manni 16 November 2010 в 12:50
поделиться