Wie validieren Sie eine CLR-Eigenschaft, nachdem es statt, bevor bei der Umsetzung IDataErrorInfo aktualisiert worden ist?

StackOverflow https://stackoverflow.com/questions/1431723

  •  07-07-2019
  •  | 
  •  

Frage

Ich habe IDataErrorInfo in einer meiner Klassen implementiert eine Eigenschaft dieser Klasse zu validieren. Das Anwesen ist mit einer Steuer auf meiner wpf Benutzerkontrolle gebunden. Die validataion funktioniert gut, außer dass es ein lebenswichtiger Fehler ist.

Es scheint die IDataErrorInfo Mitglied public string zu rufen diese [string column], bevor die Eigenschaft aktualisiert wird, so dass, wenn ich den Wert der Immobilie überprüfen geändert wird es den vorherigen Wert enthält nicht derjenige gerade eingegeben. Daher ist die Validierung immer hinter einem Schritt. Das bedeutet, dass ich nicht für falsche Werte überprüfen, die gerade eingegeben haben.

Gibt es eine Möglichkeit, diese Validierung zwingt aufgerufen werden, nachdem die Eigenschaft aktualisiert wurde und auch nicht vor. Ich habe versucht, die Update Wechsel sowohl Lost-Focus und Property aber sie immer noch den vorherigen Wert berichten, nur zu unterschiedlichen Zeiten.

Danke.

War es hilfreich?

Lösung

Das Verhalten, das Sie sich beziehen reproduziert werden kann, wenn Eigentum Änderungsbenachrichtigungen gesendet werden, bevor die Eigenschaft zugeordnet ist.

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

Auch die Änderungsbenachrichtigung anrufen, nachdem Sie tatsächlich der Wert festgelegt haben den Trick. Und nur für das Protokoll Ich nenne keine Eigenschaft Benachrichtigung wie folgt geändert!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top