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

更新: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。

备注

默认情况下,Windows Presentation Foundation (WPF) 不在导航历史记录中存储页面实例。相反,每次导航到一个页面时,都会创建新的页面实例。WPF 可以在导航历史记录中保留页面实例,但从内存消耗角度来看,这样做的代价会比较高。

不过,WPF 提供了相应的基础结构,使您可以用导航历史记录中的页面条目存储状态信息。在这种情况下,可以在对页面进行实例化后使用已存储状态重建该页面的状态。

此示例演示如何使用可在日记中记录的依赖项属性存储和检索使用导航历史记录的页面状态。可在日记中记录的依赖项属性 是具有以下元数据的依赖项属性:

Journal

当您需要在页面实例之间存储单个页面状态项时,此技术最为有用。若要在页面实例之间保留一组状态,应考虑使用 IProvideCustomContentState(请参见在页面实例之间保留单组状态)。若要保留单个页面实例的多组状态,请参见保留每个页面实例的多组状态

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

当您存储自定义内容状态中的信息时,不能存储对正保留其状态的页面实例的任何引用。这可以防止 WPF 释放该页面实例,并使默认导航历史记录行为失效。如果必须这样做,可以考虑改用 KeepAlive

请参见

任务

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

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