2010-12-29 6 views
0

Ich habe ein WPF-Fenster, das einen Datenkontext meiner Klasse 'Element' hat. Wenn ein Benutzer eine TextBox eingibt, wird die Validierung ohne Probleme ausgelöst. Ich muss diese TextBox und jede andere Eigenschaft, die in dieser gebundenen Klasse festgelegt ist, validieren, wenn der Benutzer auf "Speichern" klickt.müssen alle Eigenschaften in Klasse mit IDataErrorInfo validiert werden Implementiert

Ich glaube nicht, UpdateSourceTrigger ist, was ich suche, obwohl ich es auf PropertyChanged für, wenn der Benutzer tatsächlich Dateneingabe auf dem Feld macht gesetzt haben.

Ich würde lieber nicht alle meine Eigenschaften auf die entsprechende UI-Steuerelement auf der Save klicken, um das Update auf der Eigenschaft zu erzwingen, aber ich könnte.

Danke!

Antwort

1

Die Datenfehlerüberprüfung wird nur ausgeführt, wenn die Bindung neue Eigenschaftswerte an die Datenquelle ausgibt. Wenn Sie diese Validierung unter anderen Umständen ausführen möchten, müssen Sie Code schreiben, um dies zu tun.

Wenn Ihre UI-Eigenschaften an die Eigenschaften des Elements gebunden sind, sollte die Validierung bereits für jeden von ihnen ausgeführt worden sein, wenn auf die Schaltfläche Save geklickt wird. Warum musst du es noch einmal ausführen?

Ein häufiges Problem ist, wo Sie Ihre Bindungen auf LostFocus aktualisieren, aber das Objekt, auf das der Benutzer klickt, um das Element zu speichern, ist nicht fokussierbar. In diesem Fall wird die letzte auf der Benutzeroberfläche aktualisierte Eigenschaft nicht in der Datenquelle aktualisiert, wenn das Element gespeichert wird, da das Steuerelement den Fokus nicht verloren hat und seine Bindung nicht ausgelöst wurde. Ist das dein Problem?

+0

Die UI-Eigenschaften sind wie gesagt an die Eigenschaften des Elements gebunden. Diese Benutzeroberflächenobjekte erhalten nie den Fokus, da der Benutzer das Benutzersteuerelement eingibt, aber keine Benutzeroberflächenobjekte eingibt, also keine Überprüfung. Ging voran und schrieb Code, um alle meine Validierung auf den Eigenschaften aufzurufen, wenn der Benutzer auf "Speichern" klickt. Vielen Dank. – knockando