本主题介绍开始加载和保存通用 Windows 平台 (UWP) 应用中的设置所需的内容。 引入了主要 API,并提供链接来帮助你了解详细信息。
使用设置记住应用的用户可自定义方面。 例如,新闻阅读器可以使用应用设置来保存要显示的新闻源以及用于阅读文章的字体。
我们将查看用于保存和加载应用设置的代码。
需要了解哪些信息
使用应用设置存储配置数据,例如用户首选项和应用状态。
以下数据类型可用于设置:整数、双精度值、浮点数、字符、字符串、点、日期时间等。 还可以存储 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
。 分配给此实例的键/值字典对保存在本地设备设置数据存储中。
在上面的代码片段中, 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
实例来加载设置。 然后使用它检索键/值对。 如果数据不存在,你将获得一个 null 对象。 在 C# 中,这意味着如果设置不存在,localValue
将会成为 null
。
按照类似的模式加载复合设置。 访问本地设置数据存储中的键/值对。 如果数据未存在,将返回 null ApplicationDataContainer。 这就是为什么在上面的示例代码中加入了一个 if (composite != null)
检查。
有用的 API 和文档
下面是 API 和其他有用文档的快速摘要,可帮助你开始保存和加载应用设置。
有用的 API
API(应用程序编程接口) | DESCRIPTION |
---|---|
ApplicationData.LocalSettings | 从本地应用数据存储获取应用程序设置容器。 |
应用程序数据.漫游设置 (ApplicationData.RoamingSettings) | 从漫游应用数据存储中获取应用程序设置容器。 |
应用程序数据容器 | 支持创建、删除、枚举和遍历容器层次结构的应用设置的容器。 |
Windows.UI.ApplicationSettings 命名空间 | 提供用于定义 Windows shell 设置窗格中显示的应用设置的类。 |
有用的文档
主题 | DESCRIPTION |
---|---|
应用设置指南 | 介绍创建和显示应用设置的最佳做法。 |
存储和检索设置和其他应用数据 | 保存和检索设置的步骤指南。 |
有用的代码示例
代码示例 | DESCRIPTION |
---|---|
应用程序数据示例 | 方案 2-4 侧重于情境 |