Ich habe nicht zuvor mit WPF oder dem MVVM-Muster gearbeitet.
Ich möchte jedoch ein einfaches Dokumenten-Management-System erstellen und möchte dies mit den oben genannten Technologien tun.Wie MVVM mit der WPF-Strukturansicht implementieren?
Ich habe ein hierarchisches Dateisystem in meiner Datenbank modelliert und möchte es in einer Baumansicht anzeigen.
EER-Diagramm
Wie Sie sehen können, kann jedes Verzeichnis mehrere Unterverzeichnisse und mehrere Dateien enthalten.
Ich habe einige Tutorials zum Thema gelesen und wenn ich sie richtig verstanden habe, sollte ich Modellklassen für Verzeichnis und Datei erstellen, in denen die Daten aus der Datenbank direkt gespeichert werden.
Beispiel:
public class Directory
{
private int id;
public int Id
{
get { return id; }
set { id = value; }
}
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private int parent;
public int Parent
{
get { return parent; }
set { parent = value; }
}
private DateTime dateCreatedOn;
public DateTime DateCreatedOn
{
get { return dateCreatedOn; }
set { dateCreatedOn = value; }
}
}
Dann sollte jede Modellklasse eine zugehörige Ansicht-Modellklasse haben, die zusätzliche Eigenschaften implementiert, die zur Beschreibung des UI-Element nur dann relevant sind, auf die dieser Klasse gebunden werden Objekte.
In diesem Fall sollte die View-Model-Klasse die Eigenschaft isExpanded und isSelected des treeviewitem aufweisen.
Dann würde ich eine andere View-Model-Klasse für die gesamte Baumansicht benötigen, die die Sammlung von Directorys und Dateien enthalten würde, die angezeigt werden sollen.
Meine Fragen sind:
- Habe ich das mvvm Konzept richtig verstanden?
- Welche Klasse, das Modell oder das Ansichtsmodell, des Verzeichnisses sollte die iNotifyPropertyChanged-Schnittstelle implementieren?
- Soll die View-Model-Klasse des Verzeichnisses dieselben Eigenschaften wie die Model-Klasse enthalten oder ist ein Verweis auf ein Model-Objekt in der View-Model-Klasse ausreichend?
- Wenn die View-Model-Klasse wieder dieselben Eigenschaften der Model-Klasse enthalten soll, dann ist dies die beste Möglichkeit, sicherzustellen, dass Model-Objekte und die zugehörigen View-Model-Objekte immer synchronisiert bleiben?
Ich hoffe, diese Frage ist verständlich und danke für alle Hilfe. Andahari
Die Fragen 2-4 wurden sicherlich vorher einzeln gestellt. –
HierarchicalDataTemplate – Will