Ich stelle fest, dass viele der WPF-MVVM-Frameworks anscheinend die Verwendung der Navigationsfenster- und Seitensteuerelemente zugunsten des Komponierens von Seiten mit verschachtelten Benutzersteuerelementen vermeiden.
Das Navigationsfenster und die Seite bieten einfache Möglichkeiten, um die Navigation im Journal zu ermöglichen. Außerdem können Sie auf einfache Weise Daten zwischen Seiten austauschen. Die meisten MVVM-Frameworks, die ich gesehen habe, haben diese Funktionen auf verschiedene Arten implementiert.
Gibt es einen bestimmten Grund, warum man NavigationWindow und Page nicht benutzen sollte?
"NavigationWindow speichert keine Instanz eines Inhaltsobjekts in Navigationsgeschichte. Stattdessen, NavigationWindow erstellt ein neues Instanz des Inhaltsobjekts jeweils Zeit, zu der navigiert wird Navigationsgeschichte. Dieses Verhalten ist entworfen, um übermäßige Erinnerung zu vermeiden Verbrauch wenn große Zahlen und große Teile des Inhalts werden navigiert zu. Folglich der Staat von dem Inhalt wird nicht erinnert eine Navigation zur nächsten. Jedoch, WPF bietet mehrere Techniken an was Sie ein Stück Staat speichern können für ein Stück Inhalt in der Navigation Geschichte .... "
Ich habe gerade einen anderen Unterschied zwischen UserControls und Pages entdeckt: Seiten können nicht als DataTemplates verwendet werden.
Wenn Sie beispielsweise eine Anwendung mit dem MVVM-Stil erstellen, können Sie Folgendes erwarten:
%Vor%Aber wenn die ProjectDashboardView eine Seite ist, wird es fehlschlagen.
Ich habe gerade einige interessante Informationen zu WPF NavigationWindow und Page auf Paul Stovells Website gefunden.
Er sagt Folgendes zur NavigationWindow-Klasse:
WPF enthält eine Klasse namens NavigationWindow, die im Wesentlichen ein Fenster ist, das auch als ein Frame dient, indem die meisten der gleichen Schnittstellen implementiert werden. Es klingt zunächst nützlich, aber die meiste Zeit benötigt man mehr Kontrolle über das Fenster, daher musste ich diese Klasse nie verwenden. Ich erwähne es nur der Vollständigkeit halber, obwohl Ihre Laufleistung variieren kann.
Siehe seinen ausführlichen Artikel auf der WPF-Navigation und dem Probleme mit dem Magellan- und WPF-Seitenmanagement stieß er beim Schreiben seines Magellan WPF-Frameworks auf.
Nun, Sie werden immer noch Benutzersteuerelemente verwenden, um wiederverwendbare Unterkomponenten zu erstellen, aber was die App-Architektur angeht, kommt es wirklich auf den Anwendungsfall an. Wenn Sie eine typische Web-Anwendung erstellen, sollte eine Business / Navigation-App in Ordnung sein. Wenn du ein Spiel schreibst, nicht so sehr. Ebenso, wenn Sie etwas wie eine interaktive Werbung oder einen Media Player machen.
Tags und Links wpf mvvm user-controls