Die Sitzung findet unter statt Entschuldigung für die Eigenwerbung. Prost, Laurent @Laurent: Ich habe diese Eigenwerbung verpasst, bevor ich Ihre Sitzung zu meiner Antwort hinzugefügt habe. :):) +1 Ich fand dein Techdays-Video auf mvvm sehr hilfreich! =) … Es gibt nicht viele Bücher über MVVM, aber eines: Advanced MVVM Aber es gibt viele Online-Ressourcen und diese ist ein Muss: WPF-Apps mit dem Model-View-ViewModel-Entwurfsmuster Danach schlage ich vor, Frameworks wie zu untersuchen MVVM Light Toolkit Caliburn 2 +1 beim Spielen mit WPF und MVVM am vergangenen Wochenende stieß ich fast sofort auf die Einschränkung, dass ich Event-Handler nicht an das Ansichtsmodell binden konnte. Die Frameworks, die Sie verlinken, scheinen das zu beheben, also werde ich sie auf jeden Fall überprüfen! WPF: Binden von TreeView in MVVM Anleitung Schritt für Schritt. Hier ist ein Tutorial für MVVM, das in 5 Schritten von der Grundstufe zur Fortgeschrittenenstufe übergeht. Es ist also so, als würde man von einer 3-Schicht zu einer vollständigen MVVM wechseln. Um große Dinge zu tun (wie das Erlernen von WPF + MVVM), ist es besser, die Aufgabe in kleineren Schritten aufzuteilen.
Mvvm Schritt Für Schritt Nadja Benaissa
In diesem Kapitel erfahren Sie, wie Sie MVVM-Muster für einen einfachen Eingabebildschirm und die WPF-Anwendung verwenden, an die Sie möglicherweise bereits gewöhnt sind. Schauen wir uns ein einfaches Beispiel an, in dem wir den MVVM-Ansatz verwenden werden. Step 1 - Erstellen Sie ein neues WPF-Anwendungsprojekt MVVMDemo. Step 2 - Fügen Sie Ihrem Projekt die drei Ordner (Model, ViewModel und Views) hinzu. Mvvm schritt für schritt nadja benaissa. Step 3 - Fügen Sie eine StudentModel-Klasse in den Modellordner ein und fügen Sie den folgenden Code in diese Klasse ein
using ponentModel;
namespace {
public class StudentModel {}
public class Student: INotifyPropertyChanged {
private string firstName;
private string lastName;
public string FirstName {
get {
return firstName;}
set {
if (firstName! = value) {
firstName = value;
RaisePropertyChanged("FirstName");
RaisePropertyChanged("FullName");}}}
public string LastName {
get {return lastName;}
if (lastName! = value) {
lastName = value;
RaisePropertyChanged("LastName");
public string FullName {
return firstName + " " + lastName;}}
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string property) {
if (PropertyChanged!
Es ist gängige Praxis, Eigenschaften zu implementieren, die PropertyChanged wie folgt aufrufen:
get { return _firstName;}
set { SetProperty(ref _firstName, value);}}
Lassen Sie uns SetProperty in Ihrer viewmodelbase definieren:
protected virtual bool SetProperty(ref T storage, T value, [CallerMemberName] string propertyName = "")
if (EqualityComparer. (storage, value))
return false;
storage = value;
this. OnPropertyChanged(propertyName);
return true;}
Es feuert einfach PropertyChanged Ereignis, wenn sich der Wert der Eigenschaft ändert und true zurückgibt. Es löst das Ereignis nicht aus, wenn sich der Wert nicht geändert hat und gibt false zurück. Die Grundidee ist, dass SetProperty -Methode ist virtuell und Sie können sie in eine konkretere Klasse erweitern, z. B. um eine Validierung auszulösen, oder durch Aufrufen PropertyChanging Veranstaltung. Das ist hübsch. Mvvm schritt für schritt kochen. Dies ist alles, was Ihre ViewModelBase zu diesem Zeitpunkt enthalten sollte. Der Rest hängt von Ihrem Projekt ab. Ihre App verwendet beispielsweise die Seitenbasisnavigation und Sie haben Ihren eigenen NavigationService für die Handhabung der Navigation von ViewModel geschrieben.