应用设置存储主要分为本地存储和漫游存储两种方式。本地存储是指将应用的设置信息存储在本地存储空间中,而漫游存储则是指将应用的设置信息存储在网络服务器中,相对于本地存储而言,漫游存储支持多台设备之间的应用设置同步,更加灵活也更加方便。本节内容以本地存储方式为例,介绍如何获取及更改本地存储中的应用程序设置信息。
(1)应用设置容器获取
系统使用应用设置容器ApplicationDataContainer来保存应用的设置信息,获取应用设置容器是获得应用设置信息的第一步,在获取到应用设置容器之后才能够对其中保存的应用设置信息进行各种操作,例如写入、删除等,可以像下面这样获取当前应用的应用设置容器。
//获得本地应用设置容器
Windows.Storage.ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
(2)应用设置容器操作
介绍了如何获取当前应用的应用设置容器之后,下面来介绍如何向应用设置容器中写入应用的设置信息。
容器中的设置信息是以键值对形式存储的,包含两种类型的键值对设置信息,简单键值对和复合键值对。相应的,对于设置信息的写入、删除等操作来说,根据设置信息的不同类型,也分为简单键值对和复合键值对两种操作方式,接下来详细介绍这两种设置信息类型及其相应的操作方式,由于本地和漫游应用设置信息的读写方法相同,下面将主要以本地应用设置为例,从设置信息写入开始,陆续对设置信息的有关操作进行讲解,首先来看简单键值对设置信息的有关操作。
q 简单键值对
想要写入设置信息,需要首先使用上面已经介绍的方法获得应用设置容器,并指定用来保存设置信息的键,然后使用应用设置容器的Values属性以键值对形式保存设置信息,以下示例代码在test键中保存设置信息“localSettingsTest!”。
//获取本地应用程序设置的容器
Windows.Storage.ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
//创建名为“test”的键
String name = "test";
//将这个键赋值为“localSettingsTest!”
localSettings.Values[name] = "localSettingsTest!";
在成功写入简单键值对设置信息之后,如果想要查看它,同样可以通过应用设置容器的Values属性获得其中的设置信息,下面的示例代码获取localSettings容器中与test键对应的设置信息。
Object value = localSettings.Values["test"];
另外,如果想要删除应用设置容器中的设置信息,可以以存储设置信息的键为参数调用Remove方法,示例代码如下所示:
localSettings.Values.Remove("test");
q 复合键值对
介绍了简单键值对设置信息的写入、读取和删除操作之后,现在来看复合键值对设置信息的有关操作。
与简单键值对设置信息相似,想要写入复合键值对设置信息,首先需要获得应用设置容器,指定用来存储复合键值对设置信息的键,但不同的是,除此之外还需要新建ApplicationDataCompositeValue类的对象,并在这个对象中存储复合键值对设置信息,然后再将这个对象作为一个整体保存到应用设置容器中。示例代码如下所示:
Windows.Storage.ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
String containerName = "compositegTestSetting";
String intName = "intValue";
String stringName = "stringValue";
ApplicationDataCompositeValue composite = new ApplicationDataCompositeValue();
//整型键值对
composite[intName] = 1;
//字符串类型键值对
composite[stringName] = "I am String!";
//复合键值对
localSettings.Values[containerName] = composite;
读取复合键值对设置信息,依然使用ApplicationDataContainer类的Values属性,示例代码如下所示:
//读取复合键值对设置信息
Windows.Storage.ApplicationDataCompositeValue composite =
(Windows.Storage.ApplicationDataCompositeValue)localSettings.Values["compositegTestSetting"];
if (composite == null)
{
// 没有数据
}
else
{
// 获取 composite["intValue "]和composite["strValue "]中的数据
}
而对于复合键值对设置信息的删除,则同样可通过使用应用设置容器的Remove方法得以实现。代码如下所示:
//删除复合的键值对
localSettings.Values.Remove("compositegTestSetting");