保留每个页面实例的多组状态

更新:2007 年 11 月

此示例演示如何保留单个页面实例的多组状态并在这些状态中导航

此示例演示 Windows Presentation Foundation 的特定功能,因此未遵循应用程序开发的最佳做法。有关 Windows Presentation Foundation (WPF) 和 Microsoft .NET Framework 应用程序开发的最佳做法的全面介绍,请相应地参考以下主题:

辅助功能 - 辅助功能最佳方案

本地化 - WPF 全球化和本地化概述

性能 - 优化 WPF 应用程序性能

安全 - Windows Presentation Foundation 安全性

Download sample

生成示例

  • 安装 Windows 软件开发工具包 (SDK) 并打开其生成环境命令窗口。在“开始”菜单上,指向“所有程序”、“Microsoft Windows SDK”,然后单击“CMD Shell”。

  • 将示例(通常位于软件开发工具包 (SDK) 文档中)下载到您的硬盘。

  • 若要从生成环境命令窗口生成示例,请转到示例的源目录。在命令提示符处,键入 MSBUILD。

  • 若要在 Microsoft Visual Studio 中生成示例,请加载示例解决方案或项目文件,然后按 Ctrl+Shift+B。

运行示例

  • 若要从生成环境命令窗口运行已编译的示例,请执行示例源代码文件夹下包含的 Bin\Debug 或 Bin\Release 文件夹中的 .exe 文件。

  • 若要在 Visual Studio 中调试运行已编译的示例,请按 F5。

备注

通过状态导航,可以将对某个内容片段的状态的更改记录为导航历史记录条目,以后可以导航到该条目。导航至导航历史记录条目时,将还原该条目所记录的状态。

此示例通过记录列表框中选定项的更改来演示状态导航。每个状态条目都由一个自定义 CustomContentState 对象存储,并通过以下方式添加到导航历史记录中:调用 AddBackEntry 来添加初始条目,并调用 GetContentState 以确保在导航中保留条目。此外,它还演示了如何从后退导航历史记录中移除状态导航条目。

在需要保留单个页面实例的多组状态并在这些状态中导航时,这种技术非常有用。若要在页面实例之间保留单个状态项,请考虑使用可在日记中记录的依赖项属性(请参见在页面实例之间保留单个状态项)。若要在页面实例之间保留一组状态,请考虑使用 IProvideCustomContentState(请参见在页面实例之间保留单组状态)。

ms771388.alert_caution(zh-cn,VS.90).gif重要说明:

在自定义内容状态下存储信息时,对于在通过导航离开时要保留状态的页面,请确保未存储对该页面实例的引用。这可以防止 WPF 释放该页面实例,并使默认导航历史记录行为失效。如果必须这样做,可以考虑改用 KeepAlive

请参见

任务

在页面实例之间保留单组状态

保留每个页面实例的多组状态