Remember Multiple Sets of State Per Page Instance

This sample illustrates how to remember and navigate through multiple sets of state for a single page instance

This sample demonstrates a specific feature of the Windows Presentation Foundation and, consequently, does not follow application development best practices. For comprehensive coverage of Windows Presentation Foundation (WPF) and Microsoft .NET Framework application development best practices, refer to the following as appropriate:

Accessibility - Accessibility Best Practices

Localization - WPF Globalization and Localization Overview

Performance - Optimizing WPF Application Performance

Security - WPF Security

Download sample

Building the Sample

  • Install the Windows Software Development Kit (SDK) and open its build environment command window. On the Start menu, point to All Programs, Microsoft Windows SDK, and then click CMD Shell.

  • Download the sample, usually from the software development kit (SDK) documentation, to your hard disk drive.

  • To build the sample from the build environment command window, go to the source directory of the sample. At the command prompt, type MSBUILD.

  • To build the sample in Microsoft Visual Studio 2005, load the sample solution or project file and then press CTRL+SHIFT+B.

Running the Sample

  • To run the compiled sample from the build environment command window, execute the .exe file in the Bin\Debug or Bin\Release folder contained under the sample source code folder.

  • To run the compiled sample with debugging in Visual Studio 2005, press F5.


State navigation allows the change of state for a piece of content to be recorded as a navigation history entry that can be subsequently navigated to. When navigated to, the state recorded by the navigation history entry is restored.

This sample demonstrates state navigation by recording when the selected item of a list box is changed. Each state entry is stored by a custom CustomContentState object, and is added to navigation history by calling AddBackEntry, to add the initial entry, and GetContentState to ensure an entry is retained across navigations. Additionally, it shows how to remove a state navigation entry from back navigation history.

This technique is most useful when you need to remember and navigate through multiple sets of state for a single page instance. To remember a single item of state across page instances, consider using a journalable dependency property (see Remember A Single Item of State Across Page Instances). To remember a single set of state across page instancesconsider IProvideCustomContentState (see Remember A Single Set of State Across Page Instances).


When you store information in custom content state, make sure you do not store references to the instance of the page for which you are remembering state when you navigate away from the page. This prevents WPF from releasing the page instance, and defeats the purpose of the default navigation history behavior. If you must do this, you might consider using KeepAlive instead.

See Also

Community Additions