Mvvm Schritt Für Schritt
Abgesehen von der Benutzeroberfläche des freigegebenen Dialogfelds sind die Inhalte im Wesentlichen folgende:
Mvvm Schritt Für Schritt Ein Elefant Zeichnen
Zumindest möchten Sie sicherstellen, dass Ihr ViewModel (oder Geschäftsobjekt) implementiert wird INotifyPropertyChanged, um die Bindung zu unterstützen, und Sie können Eigenschaften direkt an UI-Steuerelemente binden, aber Sie möchten sie möglicherweise auch IDataErrorInfo zur Validierung implementieren. Wenn Sie eine ORM-Lösung verwenden, ist das Einrichten von CRUD in der Regel ein Kinderspiel. Software entwickeln mit C#, WPF und dem MVVM-Konzept - Stefan Kunick - Google Books. Dieser Artikel beschreibt einfache Rohoperationen: Es basiert auf LinqToSql, aber das ist für das Beispiel irrelevant - alles, was wichtig ist, ist, dass Ihre Geschäftsobjekte implementiert werden INotifyPropertyChanged (welche Klassen von LinqToSql generiert werden). MVVM ist nicht der Punkt dieses Beispiels, aber ich denke nicht, dass es in diesem Fall wichtig ist. Dieser Artikel demonstriert die Datenvalidierung Wiederum generieren die meisten ORM-Lösungen Klassen, die bereits implementiert sind IDataErrorInfo und normalerweise einen Mechanismus bieten, der das Hinzufügen benutzerdefinierter Validierungsregeln erleichtert.
Es gibt jedoch Situationen, in denen die Benutzeroberfläche die Dialoge öffnen muss, was die Dinge etwas schwieriger machen kann. Überlegen Sie beispielsweise, ob die Dialogposition von der Position der Schaltfläche abhängt, mit der sie geöffnet wird. In diesem Fall benötigen Sie einige UI-spezifische Informationen, wenn Sie ein geöffnetes Dialogfeld anfordern möchten. Gute Beispiele für MVVM-Vorlagen. Im Allgemeinen erstelle ich eine separate Klasse, die ein ViewModel und einige relevante UI-Informationen enthält. Leider scheint dort eine gewisse Kopplung unvermeidlich. Pseudocode eines Schaltflächenhandlers, der einen Dialog auslöst, der Elementpositionsdaten benötigt: ButtonClickHandler(sender, args){ var vm = DataContext as ISomeDialogProvider; // check for null var ui_vm = new ViewModelContainer(); // assign margin, width, or anything else that your custom dialog might require... ewModel = meDialogViewModel; // or. GetSomeDialogViewModel() // raise the dialog show event} Die Dialogansicht wird an Positionsdaten gebunden und das enthaltene ViewModel an das Innere übergeben ContentControl.