In der msdn-Seite für InotifyDataErrorInfo.GetErrors heißt es, dass die Methode GetErrors mit einem Parameter aufgerufen wird, der entweder:
sein kannDie Dokumentation sagt nicht, wenn diese Methode mit null vs String.Empty aufgerufen wird. Ich habe beide Fälle in meiner App gesehen und muss verstehen, wann ich das eine oder andere erwarten kann.
Klarstellung: Ich frage nicht , wie ich die GetErrors-Methode implementieren soll (ich teste einfach sowohl auf Null als auch auf Leer). Die Frage ist mehr zu verstehen, warum das WPF-Framework versucht, diese Methode manchmal mit null und manchmal mit einer leeren Zeichenfolge aufzurufen (ich habe beide Fälle in meiner App gefunden). Wenn Sie nach Fehlern fragen möchten, die nicht an eine bestimmte Eigenschaft gebunden sind, warum sollten Sie zwei verschiedene Werte für den Aufruf verwenden, wenn nur einer ausreicht?
Sie müssen sowohl null
als auch string.Empty
erwarten, wenn der Aufrufer nicht den Fehler für einen bestimmten Parameter, sondern die Fehler für alle Parameter der Entität wissen möchte. Sie sollten also keinen Unterschied zwischen null
und string.Empty
machen.
So etwas auf diese Weise:
%Vor%WPF ruft InotifyDataErrorInfo.GetErrors (null / string.Empty) auf, um Fehler des gesamten Ansichtsmodells zu erhalten. Alle Steuerelemente, die Datenkontext oder -bindung aufweisen, um das Modell mit "Gesamtansichtsmodellfehlern" anzuzeigen, werden mit der Fehlervorlage gerendert. Zum Beispiel haben Sie View Model Credentials mit zwei Eigenschaften: UserName, Password. Sie können etwas wie folgt implementieren:
%Vor%In den meisten Fällen können Sie jedoch null zurückgeben, wenn string.IsNullOrEmpty (propertyName).
Wann wird INotifyDataErrorInfo.GetErrors mit null vs String.empty aufgerufen?
Wenn Sie einzelne Eigenschaften validieren möchten, rufen Sie
auf %Vor%vom Setter dieser Eigenschaft.
Wenn Sie die gesamte Entität überprüfen möchten, rufen Sie
auf %Vor%von einem "zentralen" Ort, wie Speichern klicken oder Fenster schließen.
Tags und Links wpf .net c# validation