Laden...

Validation WPF via INotifyDataErrorInfo

Erstellt von CoderboyPB vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.723 Views
C
CoderboyPB Themenstarter:in
327 Beiträge seit 2008
vor 6 Jahren
Validation WPF via INotifyDataErrorInfo

Habe ich das richtig verstanden:

Bei INotifyDataErrorInfo bin ich selbst in den Settern der Properties dafür verantwortlich, dass keine invaliden Werte gesetzt werden, die Schnittstelle sorgt lediglich dafür, dass die Fehler angezeigt werden.

Und bei der Verwendung von ValidationRules verhindern diese auch parallel das Setzen der Property mit invaliden Werten?

Hinweis von Abt vor 6 Jahren

Bitte in Zukunft einen ordentlichen Titel wählen - Du bist wahrlich lange genug hier dabei!
Ich hab's mal angepasst....

2.080 Beiträge seit 2012
vor 6 Jahren

Die Validierung über die ValidationRules verhindert das Setzen, genau.

Die Interfaces, die mir dazu bekannt sind (INotifyDataErrorInfo, IDataErrorInfo, IValidatableObject) zielen immer darauf ab, dass der Wert bereits gesetzt wurde.
Die Property lässt den falschen Wert also zu, aber das Objekt kann dir danach mitteilen, was wie falsch ist.
Es muss dann explizit oder als Reaktion auf das ErrorsChanged-Event nach Fehler-Informationen gefragt werden.

INotifyDataErrorInfo und IDataErrorInfo werden glaube ich per Default von WPF abgefragt, kann aber auch sein, dass ich mich irre. Mindestens DevExpress tut das aber, da hab ich das schon oft genutzt.
Wenn WPF das nicht von sich aus unterstützt, müsste sich das aber auch relativ einfach nach bauen lassen.

Ich persönlich bevorzuge INotifyDataErrorInfo, weil ich es nicht gut finde, dass ein Validation-Interface mir einen Indexer aufzwingt. Implementieren tue ich aber immer alle drei Interfaces, was mir nicht passt wird explizit implementiert.

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.

C
CoderboyPB Themenstarter:in
327 Beiträge seit 2008
vor 6 Jahren

Vielen Dank 😃