Как вы проверяете свойство clr после его обновления, а не раньше при реализации IDataErrorInfo? - PullRequest
0 голосов
/ 16 сентября 2009

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

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

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

Спасибо.

1 Ответ

3 голосов
/ 18 сентября 2009

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

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

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

...