MVVM - Валидация

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

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

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

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

Значение 1 устанавливается в графическом интерфейсе на 1 -> это помечается красным, потому что проверка других значений не запускается, поэтому значение 2 в графическом интерфейсе не помечается как неисправное

Значение 2 установлено в 2 в графическом интерфейсе, теперь мы достигли допустимого состояния, но только значение 2 проверяется, поэтому значение 1 по-прежнему помечается как неисправное.

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

Вместо реализации валидации по исключению можно также реализовать интерфейс IDataErrorInfo, но проблема все еще существует, нет способа заставить зависимые значения снова проверить свои значения, по крайней мере, тот, который я могу видеть :)

Любая помощь приветствуется

ура, Манни

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

15.11.2010 - Часть 2

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

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

Ответы на вопрос(2)

Ваш ответ на вопрос