Speichern eines Zustandssatzes über mehrere Seiteninstanzen
Aktualisiert: November 2007
In diesem Beispiel wird veranschaulicht, wie mehrere Seitenzustandselemente mithilfe von IProvideCustomContentState und CustomContentState über Seiteninstanzen hinweg gespeichert werden.
In diesem Beispiel soll nur ein bestimmtes Feature von Windows Presentation Foundation veranschaulicht werden, daher werden die bewährten Methoden für die Anwendungsentwicklung nicht befolgt. Ausführliche Informationen über empfohlene Vorgehensweisen bei der Anwendungsentwicklung für Windows Presentation Foundation (WPF) und Microsoft .NET Framework finden Sie unter folgenden Themen:
Eingabehilfen – Bewährte Methoden für Eingabehilfen
Lokalisierung – Übersicht über WPF-Globalisierung und -Lokalisierung
Leistung – Optimieren der WPF-Anwendungsleistung
Sicherheit – Windows Presentation Foundation-Sicherheit
Erstellen des Beispiels
Installieren Sie das Windows Software Development Kit (SDK) und öffnen Sie dessen Buildumgebungs-Befehlsfenster. Zeigen Sie im Startmenü auf Alle Programme und Microsoft Windows SDK, und klicken Sie dann auf CMD Shell.
Laden Sie das Beispiel, normalerweise aus der Software Development Kit (SDK)-Dokumentation, auf Ihre Festplatte herunter.
Um das Beispiel über das Buildumgebungs-Befehlsfenster zu erstellen, wechseln Sie zum Quellverzeichnis des Beispiels. Geben Sie an der Eingabeaufforderung MSBUILD ein.
Um das Beispiel mit in Microsoft Visual Studio zu erstellen, laden Sie die Projektmappe oder Projektdatei des Beispiels, und drücken Sie STRG+UMSCHALT+B.
Ausführen des Beispiels
Um das kompilierte Beispiel über das Buildumgebungs-Befehlsfenster auszuführen, führen Sie die EXE-Datei aus dem Ordner Bin\Debug oder Bin\Release, die unter dem Quellcodeordner des Beispiels enthalten sind, aus.
Um das kompilierte Beispiel in Visual Studio mit Debuggen auszuführen, drücken Sie F5.
Hinweise
In der Standardeinstellung speichert Windows Presentation Foundation (WPF) keine Seiteninstanzen im Navigationsverlauf. Stattdessen wird jedes Mal eine neue Instanz einer Seite erstellt, wenn zu dieser navigiert wird. Daher werden Zustandsinformationen zur ersten Instanz der Seite nicht gespeichert und stehen nicht zur Verfügung, wenn erneut zu der Seite navigiert wird. WPF kann Seiteninstanzen und implizit den Seitenzustand im Navigationsverlauf beibehalten. Dies kann jedoch zu einer hohen Speicherauslastung führen.
WPF stellt jedoch eine Infrastruktur bereit, durch die Sie Zustandsinformationen mit dem Eintrag für eine Seite im Navigationsverlauf speichern und auf die neue Seiteninstanz anwenden können, wenn mithilfe des Navigationsverlaufs zu dieser navigiert wird.
In diesem Beispiel wird veranschaulicht, wie auf einer Seite IProvideCustomContentState implementiert werden kann, um einen Zustandssatz zu speichern, der eines oder mehrere Element enthalten kann. Wenn von einer Seite weg navigiert wird, wird GetContentState von WPF aufgerufen, um den Seitenzustand abzufragen, der gespeichert werden soll. GetContentState gibt eine Unterklasse von CustomContentState zurück, die Sie zum Speichern und Wiedergeben des Zustands erstellen.
Dieses Verfahren ist am nützlichsten, wenn Sie mehrere Elemente eines Seitenzustands über mehrere Seiteninstanzen hinweg speichern müssen. Um ein einzelnes Zustandselement über mehrere Seiteninstanzen hinweg zu speichern, sollten Sie eine journalfähige Abhängigkeitseigenschaft verwenden (siehe Speichern eines Zustandselements über mehrere Seiteninstanzen). Informationen zum Speichern mehrerer Zustandssätze für eine Seiteninstanz finden Sie unter Speichern mehrerer Zustandssätze pro Seiteninstanz.
![]() |
---|
Wenn Sie Informationen im benutzerdefinierten Inhaltszustand speichern, können Sie keine Verweise auf die Instanz der Seite speichern, für die Sie Zustände speichern. Hierdurch wird verhindert, dass WPF die Seiteninstanz freigibt. Außerdem wird der Vorteil des Standardverhaltens des Navigationsverlaufs zunichte gemacht. Sollte dies dennoch erforderlich sein, sollten Sie stattdessen KeepAlive verwenden. |