2009-09-16 2 views
0

Я реализовал IDataErrorInfo в одном из моих классов для проверки свойства этого класса. Свойство привязано к элементу управления для моего пользовательского элемента управления wpf. Валидатация работает отлично, за исключением одного существенного недостатка.Как вы проверяете свойство clr после его обновления, а не ранее при реализации IDataErrorInfo?

По-видимому, он вызывает public-строку IDataErrorInfo этой [string columnName] перед обновлением свойства, поэтому, когда я проверяю значение изменяемого свойства, оно содержит предыдущее значение, а не только что введенное. Поэтому валидация всегда на шаг впереди. Это означает, что я не могу проверить неверные значения, которые только что были введены.

Есть ли способ заставить эту проверку вызывать после того, как свойство было обновлено, а не раньше. Я попытался изменить UpdateSourceTrigger как на LostFocus, так и на PropertyChanged, но они все равно сообщают о предыдущем значении, просто в разное время.

Спасибо.

+0

Немного фактического XAML, используемого для привязки, было бы полезно. А также я хотел бы видеть, как вы внесли уведомление об изменении свойств в BO. – Trainee4Life

+0

Можете ли вы показать реализацию одного конкретного свойства, для которого у вас возникла эта проблема (неважно, что она создана)? –

ответ

3

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

public string FirstName 
{ 
    get { return _firstName; } 
    set 
    { 
     if (this.PropertyChanged != null) 
     { 
      this.PropertyChanged 
       (this, new PropertyChangedEventArgs("FirstName")); 
     } 
     _firstName = value; 
    } 
} 

Может быть вызвано уведомление об изменении после того, как вы действительно установили значение, может сделать трюк. И только для записи я не называю измененное уведомление об изменении свойств как это!

+0

Хорошая идея, но я использую LinqToSql в качестве модели, и по умолчанию Уведомление об изменении свойства после значения установлено. – HAdes