Durchführen Validierung auf einem Databound-Objekt, nachdem die Eigenschaft aktualisiert wurde

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

Frage

Ich habe eine Grundform mit den Kontrollen, die ein Objekt datengebundene setzt den INotifyPropertyChanged Schnittstelle. Ich möchte einige Validierung, um ein paar Eigenschaften hinzufügen, aber nicht wollen, gehen durch Umsetzung IDataErrorInfo im Interesse der ein paar Eigenschaften zu validieren.

Ich habe die Funktionen erstellt, die die Validierung und gibt die Fehlermeldung (falls zutreffend) in dem Objekt durchführen. Was ich möchte, ist tun, um diese Funktionen von meiner Form an, wenn die entsprechenden Eigenschaften für das Objekt geändert haben, und richten Sie die Errorprovider Kontrolle in meiner Form mit Fehlermeldungen, die von den Validierungsfunktionen zurückgegeben wurden .

Ich habe versucht, Event-Handler auf die Validierung und Lost-Focus-Ereignisse Einhaken, aber diese scheinen zu schießen, bevor mein Objekt aktualisiert wird, und daher sind sie die richtigen Daten nicht validiert werden. Es ist nur, wenn ich die Textbox verlassen, gehen Sie zurück in und dann wieder verlassen, dass die Validierung läuft gegen die korrekten Daten.

Gibt es ein anderes Ereignis, das ich in Haken kann, so dass ich diese Validierungsfunktionen aufrufen können, nachdem die Eigenschaft auf mein Objekt aktualisiert wurde? Oder bin ich besser dran, nur die Umsetzung der IDataErrorInfo Schnittstelle?

War es hilfreich?

Lösung

Ich bin mir nicht sicher, was genau das Problem ist, sagen Sie, dass Sie nicht die Eigenschaft festlegen erhalten kann, bis das Steuerelement den Fokus verliert?

Wenn ja, müssen Sie die Bindung setzen OnPropertyChanged statt OnValidation zu aktualisieren.

Die Bindung OnPropertyChanged bedeutet die Bindung sofort aktualisiert wird, während OnValidation nur das zugrunde liegende Objekt aktualisiert, wenn eine Validierung ausgelöst wird (was für die meisten Kontrollen ist, wenn sie den Fokus verlieren).

Andere Tipps

Ich glaube, ich habe eine Lösung für das Problem mit Hilfe von Camerons Beitrag gefunden. Ich habe die Bindung zu aktualisieren OnPropertyChanged geändert und wenn ich jetzt die Event-Handler zum Lostfocus-Ereignisse verdrahten die Validierung auf den „neuen“ Wert aus der Textbox durchgeführt wird und nicht als das, was vorher in dem Objekt statt

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