Wann sollte ich ein UserControl anstelle einer Page verwenden?

8

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?

    
dthrasher 12.04.2010, 13:30
quelle

4 Antworten

10
  

"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 .... "

Ссылка

    
jasonk 12.04.2010, 16:14
quelle
3

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.

    
dthrasher 17.06.2010 15:13
quelle
2

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.

    
dthrasher 20.04.2010 21:16
quelle
1

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.

    
Doobi 12.04.2010 14:08
quelle

Tags und Links