ich beschäftige mich gerade ein wenig mit der Validierung unter WPF und stosse hier gerade auf ein Problem. Meine Validierungsklasse arbeitete mit IDataErrorInfo und prüft aber zusätzlich noch die DataAnnotations, da ich diese sehr praktisch finde. Aber ich denke, das dürfte nicht die Ursache für das Problem sein.
Nehmen wir ein simples Eingabeformular mit einer Anschrift. Von den Feldern sind Name und Ort Pflichtfelder. wenn ich nun eine neue Anschrift eingeben möchte, dann werden mir dank ValidatesOnDataErrors=True beide Pflichtfelder gleich rot markiert. Das ist sachlich zwar korrekt, schreckt aber auch irgendwie ab.
Ich hätte gerne, das erst ab einen bestimmten Zeitpunkt - in diesem Fall Speichern der Eingabe - die Validierung gestartet wird und DANN erst die Felder rot werden. Perfekt wäre es, wenn man dies für einzelne Properties bestimmen könnte, aber ich glaube das geht dann doch zu weit :) Das Ganze dann "natürlich" MVVM-konform.
Hat jemand Ideen, wie und ob man das umsetzen könnte? Oder ist davon pauschal abzuraten, weil es gegen irgendwelche Konventionen verstossen würde? Ich orientiere mich hier einfach mal an Webformularen und die prüfen die Pflichtfelder ja auch erst beim Absenden.
Nur benötige ich dann leider Code-behind. Wobei ich nach Deinem Ansatz diesen Link hier gefunden habe. http://shujaatsiddiqi.blogspot.com/2011/01/updatesourcetrigger-explicit-for-mvvm.html Ich schanke aber noch, ob ich mir das antun möchte, hier noch einen Converter einzubauen :)
Du könntest zwar ohne Code-behind auskommen, aber ohne Code kommst du nicht aus ;-)
Wenn es nur um die Code-behind geht, weil Du (ich weiß echt nicht, warum) das Ziel hast, eine Anwendung zu schreiben, die nur aus XAML besteht, dann kannst Du den Code für z.B. das Click-Ereignis des OK-Schalters direkt in die XAML-Datei schreiben (in einem CDATA-Abschnitt).