Mit IDataErrorInfo in M-V-VM
Wenn meine domain-Objekte IDataErrorInfo implementieren, und ich bin mit M-V-VM, wie kann ich das propagieren von Fehlern durch das ViewModel in den Blick? Wenn ich die Bindung direkt auf das Modell, ich würde den "ValidateOnExceptons" und "ValidateOnErrors" - Eigenschaft auf true fest auf meine Bindung. Aber mein ViewModel nicht IDataErrorInfo implementieren. Nur mein Modell. Was kann ich tun?
Klärung
Ich bin den Umgang mit einer vorhandenen codebase zur Implementierung von IDataErrorInfo in der domain-Objekte. Ich kann nicht einfach IDataErrorInfo implementieren, in der meine Ansicht-Modell.
InformationsquelleAutor Micah | 2008-12-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie IDataErrorInfo implementieren zusätzlich auch in Ihrer VM und die route, die die Aufrufe für die VM, um Ihre entsprechende domain-Objekte. Ich denke, dies ist der einzige Weg, ohne dass der domain-Objekte direkt in der Ansicht.
Ich weiß nicht implementiert, aber ich denke, man muss es manuell tun
Hmm klingt nicht praktikabel, ich bin auf der Suche nach ein Weg, zu sagen, WPF look für IDataErrorInfo auf dem view-Modell.
InformationsquelleAutor MarioH
wenn Sie mit M-V-VM, das ViewModel definieren sollte, die IDataErrorInfo-Schnittstelle, nicht das Modell.
Könnte man sagen, dass die IDataErrorInfo-Schnittstelle ist nur für die Ansicht, und es gehört nicht in das Modell, aber das ist eine Frage des Stils.
Dass die ViewModel implementieren, die IDataErrorInfo-Schnittstelle und übertragen die Fehler aus dem Modell wäre die einfachste Antwort.
Diese Antwort widerspricht best practices von MS (msdn.microsoft.com/en-us/library/gg405484(v=PandP.40).aspx): in der Regel, das Modell implementiert die Einrichtungen, die es einfach machen, zu binden, um die Ansicht. Dies bedeutet normalerweise, dass es unterstützt Eigenschaft und Sammlung der Nachricht geändert durch die INotifyPropertyChanged-und INotifyCollectionChanged-Schnittstellen. Das Modell kann ebenfalls für die Validierung von Daten-und Fehler-reporting über die IDataErrorInfo (oder INotifyDataErrorInfo) Schnittstellen. Diese Schnittstellen ermöglichen es, WPF-und Silverlight-Datenbindung, um benachrichtigt zu werden, wenn sich Werte ändern, so dass die Benutzeroberfläche verändert werden können
Ich bin mir nicht sicher, ob ich Zustimmen. Das Modell sollte nicht verschmutzt sein, mit UI betrifft. Umsetzung ein paar Schnittstellen in das Modell nur um die UI freut sich nicht richtig anfühlt, das ist es, was das ViewModel ist. Dann wieder, es hängt alles von der Komplexität des Modells, der Größe und der Art des Projektes, usw. Ich glaube nicht, dass es eine wahre Antwort. Aber ich würde versuchen, das Modell sauber von irgendwelche Bedenken außerhalb der business-Logik.
Das ist eine Art, wie ich mich fühle, aber ich wurde nur darauf hin, was die Microsoft-Antwort scheint zu sein (wenn auch nicht gut-begründeten Antwort).
InformationsquelleAutor gcores
Gibt es einen guten Artikel im MSDN Magazin zu diesem Thema, WPF-Anwendungen Mit Dem Model-View-ViewModel Design Pattern: http://msdn.microsoft.com/en-us/magazine/dd419663.aspx
Laut diesem Artikel, in Dem Daten-Modell und Repository-Abschnitt (http://msdn.microsoft.com/en-us/magazine/dd419663.aspx#id0090102) finden Sie eine einfache Implementierung. Der Kunde wird die entity-Klasse und das ViewModel bekommt die Fehler-Indikatoren aus der Einheit.
Können Sie ValidationsRule überprüfen der Gültigkeit der Daten:
Dies ist ein Beispiel der validator styling:
InformationsquelleAutor artur02
Den BookLibrary Beispielanwendung der WPF Application Framework (WAF) könnte interessant für Sie sein. Es implementiert die IDataErrorInfo-Schnittstelle, als auch auf die domain-Objekte und verwendet die M-V-VM pattern.
InformationsquelleAutor jbe