2012-04-04 2 views
0

У меня есть настраиваемый элемент управления, который привязывается к объекту из модели просмотра. У элемента управления есть своя «мини-модель обзора» (реализует raiseproperychanged и idataerrorinfo), для которой она используется для некоторой конкретной проверки.Получение контрольных ошибок проверки (просмотра) обратно в модель просмотра

Есть некоторые свойства, используемые внутри этого элемента управления, которые могут привести к тому, что элемент управления окажется в недопустимом состоянии (эти свойства присущи этому элементу управления и не представляют свойства модели, к которой мы привязаны). Как я могу заставить эти ошибки проверки «пузыриться», чтобы свойство, связанное с этим элементом управления, показало, что оно имеет ошибку проверки?

Для более четкого примера. Скажем, у меня есть объект person, который я привязываю к свойству person пользовательского пользовательского контроля. Этот элемент управления позволит вам редактировать вспомогательные свойства и таковые у человека. В этом контроле есть дополнительная проверка, кроме того, что обычно применяется к объекту человека, например, элемент управления «недействителен», пока пользователь не закроет диалоговое окно, созданное элементом управления, или не установил флажок, указывающий, что они были закончены. Я хочу, чтобы эти ошибки проверки распространялись так, чтобы привязка к свойству person отображала ошибку проверки, или, более конкретно, VM, которая ее содержит.

ответ

1

У вас это неправильный путь - элемент управления устанавливает значение в ViewModel (через привязку), а ViewModel проверяет каждое поле и предоставляет сообщение об ошибке через IDataErrorInfo. Для получения дополнительной информации см .: http://codeblitz.wordpress.com/2009/05/08/wpf-validation-made-easy-with-idataerrorinfo/

+0

Я знаю, как работает IDataErrorInfo. Я ищу способ указать, что сам «Человек» является недействительным, а не только под-свойствами человека. – Brandorf

+0

Хотя это не решит мою непосредственную проблему, я собираюсь отметить это как ответ, поскольку, похоже, моя реальная проблема - это подход, а не отсутствие интерфейса для выполнения того, что я хочу. ;п – Brandorf

Смежные вопросы