Frage

Ich habe eine sehr einfache WPF-Anwendung, in der ich Daten verwende Bindung Bearbeitung einiger benutzerdefinierten CLR-Objekte zu ermöglichen. Ich bin zu wollen nun einige der Eingabevalidierung in setzen, wenn der Benutzer klickt speichern. Allerdings sind alle WPF Bücher, die ich habe zu diesem Thema widmen nicht wirklich keinen Platz. Ich sehe, dass Sie benutzerdefinierte Validationrules erstellen können, aber ich frage mich, ob dies für meine Bedürfnisse zu viel des Guten wäre.

Also meine Frage ist: gibt es eine gute Beispielanwendung oder Artikel irgendwo, die für die Validierung von Benutzereingaben in WPF Best Practice zeigt

War es hilfreich?

Lösung

Ich denke, die neue bevorzugte Art und Weise IDataErrorInfo verwenden könnte sein,

Lesen Sie mehr hier

Andere Tipps

Von MS Patterns & Practices Dokumentation :

  

Datenvalidierung und Fehlerberichterstattung

     

Ihre Ansicht Modell oder Modell wird oft sein   erforderliche Datenvalidierung auszuführen   und zu signalisieren, eine beliebige Datenvalidierung   Fehler der Ansicht, so dass der Benutzer   handeln kann, sie zu korrigieren.

     

Silverlight und WPF unterstützen   zur Verwaltung von Datenvalidierungsfehler   die auftreten, wenn einzelne wechselnden   Eigenschaften, die zu den Kontrollen gebunden sind   in der Ansicht. Für einzelne Eigenschaften   Das sind dagetenbundenen zu einer Kontrolle, die   View-Modell oder das Modell kann ein Datensignal,   Validierungsfehler innerhalb der Eigenschaft   Setter durch eine eingehende schlechte Ablehnung   Wert und eine Ausnahme zu werfen. Wenn   die ValidatesOnExceptions Eigenschaft auf   die Datenbindung gilt, wobei die Daten   Bindungsmodul in WPF und Silver   wird behandelt die Ausnahme und Anzeige   ein visueller Hinweis für den Benutzer, dass es   ein Datenvalidierungsfehler.

     

Allerdings werfen Ausnahmen   Eigenschaften sollten auf diese Weise sein   wenn möglich, vermieden werden. Eine Alternative   Ansatz ist die zur Umsetzung   IDataErrorInfo oder INotifyDataErrorInfo   Schnittstellen auf Ihrer Ansicht nach Modell oder Modell   Klassen. Diese Schnittstellen ermöglichen Ihren   Ansicht Modell oder Modelldaten durchzuführen,   Validierung für einen oder mehr Immobilien   Werte und eine Fehlermeldung zurück   zu der Ansicht, so dass der Benutzer sein kann   benachrichtigt den Fehler.

Die Dokumentation geht auf zu erklären, wie IDataErrorInfo und INotifyDataErrorInfo zu implementieren.

personaly, ich bin Ausnahmen mit Validierung zu behandeln. es erfordert folgende Schritte:

  1. in Ihrer Datenbindung Ausdruck, müssen Sie "ValidatesOnException = True"
  2. hinzufügen
  3. in Sie Datenobjekt Sie sind verbindlich zu, müssen Sie DependencyPropertyChanged Handler hinzuzufügen, wo Sie überprüfen, ob neue Wert Ihre Bedingungen erfüllt - wenn nicht - Sie dem Objekt alten Wert wieder her (wenn Sie müssen) und Sie Ausnahme auslösen.
  4. in Ihrer Kontrolle Vorlage ungültigen Wert in der Steuerung verwenden, um anzuzeigen, können Sie Fehlererfassung und Anzeigeausnahmemeldung zugreifen zu können.

Der Trick hier ist nur für Objekte zu binden, die von DependencyObject abgeleitet werden. einfache Implementierung von INotifyPropertyChanged würde nicht funktionieren - es ist ein Fehler im Rahmen ist, mit dem Sie den Zugriff auf Fehlersammlung verhindert.

Überprüfen Sie auch diesem Artikel . Angeblich soll Microsoft veröffentlicht ihr Enterprise Library (v4.0) von ihren Mustern und Praktiken, wo sie die Validierung Thema abdecken, sondern Gott weiß, warum sie nicht die Validierung für WPF enthalten war, so der Blog-Post ich lenken Sie zu, erklärt, was der Autor es anzupassen hat. Hoffe, das hilft!

Vielleicht haben Sie Interesse an der Booklibrary Beispielanwendung der WPF Application Framework ( WAF) . Es zeigt, wie die Validierung in WPF verwenden und wie die Schaltfläche Speichern steuern, wenn Validierungsfehler vorhanden ist.

Wenn Sie Ihre Business-Klasse direkt von Ihrem UI verwendet wird, ist preferrable IDataErrorInfo zu verwenden, da es Logik setzen näher an ihre Besitzer.

Wenn Sie Ihre Business-Klasse eine Stub-Klasse durch einen Verweis auf einen WCF / XmlWeb-Dienst erstellt, dann können Sie nicht / dürfen nicht IDataErrorInfo noch throw Exception für die Verwendung mit ExceptionValidationRule verwenden. Stattdessen können Sie:

  • Verwenden Sie benutzerdefinierte ValidationRule.
  • Definieren Sie eine partielle Klasse in WPF UI-Projekt und implementiert IDataErrorInfo.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top