Ich habe einige Design-Fragen in meinem wpf MVVM (Prism-basierte) Anwendung, würde mich freuen, Ihren Rat zu bekommen. Mein Modell ist sehr einfach:Hinzufügen von INotifyPropertyChanged zu Model?
public class Customer
{
public string FirstName {get;set;}
public string LastName {get;set;}
}
Wie Sie sehen können, habe ich jede INotifyPropertyChnaged Unterstützung nicht für meine Modellklasse haben. Ich habe auch ViewModel für den CustomerDetails Bildschirm, der INotifyPropertyChanged unterstützt.
In meiner Sicht verwende ich die Bindung an den Item.FirstName und mein ViewModel wird aktualisiert. Mein Problem ist - da nur die FirstName-Eigenschaft über die Ansicht aktualisiert wird und das Model selbst INotifyPropertyChanged nicht unterstützt, daher wird der Itemsetter nicht aufgerufen, und der IsDirty bleibt gleich falsch (und aktualisiert daher die IsDirty-Benachrichtigung nicht) auf der Benutzeroberfläche).
Ich weiß, ich INotifyPropertyChanged im Modell unterstützen kann, und dann registrieren, auf das Item.PropertyChanged Ereignis in dem View-Modell und stelle tatsächlich die IsDirty zu wahren, aber - Da ich auch CodeFirst verwenden, und mein Modell Klasse, die zwischen meiner ServerSide- und meiner Client-Seite geteilt wird (ohne Add Service Reference), möchte ich die INotifyPreoprtyChanged-Sachen nicht auf meiner Serverseite hinzufügen.
Ich bin daran interessiert, ein neues Projekt zu erstellen, das T4-Vorlagen verwenden wird, um alle meine Entitäten nacheinander zu kopieren (als Kunde) und INotifyPropertyChanged Unterstützung für jedes Modell hinzuzufügen. Ist das etwas, das vernünftig erscheint oder nicht? Irgendwelche anderen Vorschläge?
Danke!
Ich verstehe, was Sie sagen, aber das wird eine Menge Codierung für (fast) ohne Grund erfordern. Sollte ich jede Eigenschaft meines Modells in meinem Ansichtsmodell duplizieren? – Asaf
@Asaf Sie haben Recht. Ich kenne dein Projekt nicht. Wenn es nur ein kleiner ist, könnte es ein großer Overhead sein. Aber in größeren Projekten, wenn Sie zusätzliche Anforderungen wie Testbarkeit haben, entkoppeln a.s.o. Es wäre ein Weg, sie zu erreichen. – DHN