在 UWP 应用中保存和加载设置
本主题介绍开始在通用 Windows 平台 (UWP) 应用中加载和保存设置需要了解的内容。 介绍了主要 API,并提供了可帮助你了解详细信息的链接。
使用设置可以记住应用中用户可自定义的方面。 例如,新闻阅读器可以使用应用设置来保存要显示的新闻源以及用于阅读文章的字体。
我们将查看用于保存和加载应用设置的代码。
需要了解哪些内容
使用应用设置存储配置数据,如用户首选项和应用状态。
设置可以使用以下数据类型:整数、加倍、浮点、字符、字符串、点、DateTimes,等等。 还可以存储 ApplicationDataCompositeValue 类的实例,当存在应被视为单元的多个设置时这很有用。 例如,用于在应用的阅读面板中显示文本的字体名称和点大小应该作为单个单元保存/还原。 这可以防止一个设置由于并发访问而与另一个设置不同步,例如主程序和后台任务之间。
下面是你需要了解的用于保存或加载应用设置的主要 API:
- Windows.Storage.ApplicationData.Current.LocalSettings 从本地应用数据存储获取应用程序设置容器。 存储在此处的设置保存在设备上。
- Windows.Storage.ApplicationData.Current.RoamingSettings 从漫游应用数据存储获取应用程序设置容器。 存储在此处的设置不再漫游(从 Windows 11 起),但设置存储仍然可用。 RoamingSettings 的建议替代产品为 Azure 应用服务。 Azure 应用服务广受支持、记录良好、可靠,并且支持跨平台/跨生态系统场景,例如 iOS、Android 和 Web。
- Windows.Storage.ApplicationDataContainer 是将应用设置表示为键/值对的容器。 使用此类创建和检索设置值。
- Windows.Storage.ApplicationDataCompositeValue 表示应作为单元序列化的多个应用设置。 当一个设置不应独立于其他设置单独更新时,这非常有用。
保存应用设置
在此简介中,我们将重点介绍两个简单的场景:保存和加载简单的应用设置,以及保存和加载组合字体/字体大小设置。
ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
// Save a setting locally on the device
localSettings.Values["test setting"] = "a device specific setting";
// Save a composite setting locally on the device
Windows.Storage.ApplicationDataCompositeValue composite = new Windows.Storage.ApplicationDataCompositeValue();
composite["Font"] = "Calibri";
composite["FontSize"] = 11;
localSettings.Values["FontInfo"] = composite;
通过使用 Windows.Storage.ApplicationData.Current.LocalSettings
首先为本地设置数据存储获取 ApplicationDataContainer 来保存设置。 分配到此实例的键/值字典对在本地设备设置数据存储中保存。
在上述代码片段中,ApplicationDataCompositeValue 存储多个键/值对。 如果你有多个不应彼此脱离同步的设置,复合值非常有用。 保存 ApplicationDataCompositeValue 时,值作为一个单元保存和加载或自动完成。 这样,相关设置就不会不同步。
加载应用设置
ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
// load a setting that is local to the device
String localValue = localSettings.Values["test setting"] as string;
// load a composite setting
Windows.Storage.ApplicationDataCompositeValue composite = (ApplicationDataCompositeValue)localSettings.Values["FontInfo"];
if (composite != null)
{
String fontName = composite["Font"] as string;
int fontSize = (int)composite["FontSize"];
}
通过使用 Windows.Storage.ApplicationData.Current.LocalSettings
首先为本地设置数据存储获取 ApplicationDataContainer 实例来加载设置。 然后使用它来检索键/值对。 如果数据不存在,你将得到一个 null 对象。 在 C# 中,这意味着如果设置不存在,localValue
将为 null
。
按照类似的模式加载复合设置。 从本地设置数据存储访问键/值对。 如果数据不存在,你将得到一个 null ApplicationDataContainer。 这就是上面的示例代码中有一个 if (composite != null)
检查的原因。
有用的 API 和文档
以下是 API 和其他有用文档的核心摘要,可帮助你开始保存和加载应用设置。
有用的 API
API | 说明 |
---|---|
ApplicationData.LocalSettings | 从本地应用数据存储获取应用程序设置容器。 |
ApplicationData.RoamingSettings | 从漫游应用数据存储获取应用程序设置容器。 |
ApplicationDataContainer | 支持创建、删除、枚举和遍历容器层次结构的应用设置的容器。 |
Windows.UI.ApplicationSettings 命名空间 | 提供用于定义显示在 Windows shell 的设置窗格中的应用设置的类。 |
有用的文档
主题 | 说明 |
---|---|
应用设置指南 | 介绍有关创建和显示应用设置的最佳做法。 |
存储和检索设置以及其他应用数据 | 保存和检索设置的演练。 |
有用的代码示例
代码示例 | 说明 |
---|---|
应用程序数据示例 | 场景 2-4 重点介绍设置 |