这是第三篇关于系列短文章“WP7 Isolated Storage系列”,专注于真实实用,并且有源代码的例子,而不是存粹理论。接下来我将要讨论关于在IsolatedStorageSettings中存储数据。
· WP7 Isolated Storage 系列 - 1.Isolated Storage 简介
· WP7 Isolated Storage 系列 - 2.创建文件夹和文件
· WP7 Isolated Storage 系列 - 3.使用IsolatedStorageSettings存储数据
· WP7 Isolated Storage 系列 - 4.读取和存储文本文件
· WP7 Isolated Storage 系列 - 5.使用XmlSerializer读取和存储XML文件
· WP7 Isolated Storage 系列 - 6.使用XmlWriter读取和存储XML文件
· WP7 Isolated Storage 系列 - 7.读取和存储图像
· WP7 Isolated Storage 系列 - 8.读取和存储拍摄的图像
· WP7 Isolated Storage 系列 - 9.读取和存储二进制文件
· WP7 Isolated Storage 系列 - 10.文件操作
· WP7 Isolated Storage 系列 - 11.建议和最佳实践
· WP7 Isolated Storage 系列 - 12.开源数据库和帮助库文件
让我们从创建一个简单的Windows Phone 7工程开始。下一步需要添加下面的namespaces到MainPage.xaml.cs中去(或者你可以在另一个页面中使用这个代码):
using System.IO.IsolatedStorage;
基本上存储数据到WP7 IsolatedStorage最容易的方法就是使用IsolatedStorageSettings类,它是一个在Isolated Storage中的键-值对Dictionary<TKey,TValue>。一个典型的应用就是保存settings,比如每一页面显示的图像,页面布局选项等等。
注意:IsolatedStorageSettings只支持键/值对形式的数据存储。
保存字符串值到IsolatedStorageSettings中
在这个例子中我们将要存储一个字符串形式的email:
public void SaveStringObject()
{
var settings = IsolatedStorageSettings.ApplicationSettings;
settings.Add("myemail", "support@windowsphonnegeek.com");
}
通过IsolatedStorageSettings获取字符串值
在这个例子中我们将要从IsolatedStorageSettings中读取之前存储的字符串email:
//Retrieve email Data
var location = settings["myemail"].ToString();
settings["myemail"] = "support@windowsphonnegeek.com";
保存复合对象到IsolatedStorageSettings中
在这个例子中我们将要存储一个复合对象。我们将要创建一个示例类City,这个类代表城市。之后我们会通过这个类存储关于城市的数据到IsolatedStorageSettings中去。
public void SaveCompositeObject()
{
var settings = IsolatedStorageSettings.ApplicationSettings;
City city = new City { Name = "London", Flag = "uk.png" };
settings.Add("city", city);
}
public class City
{
public string Name
{
get;
set;
}
public string Flag
{
get;
set;
}
}
从IsolatedStorageSettings中获取复合对象
在这个例子中我们将会从IsolatedStorageSettings中获取之前存储的City对象。
//Retrieve City Data
City City1;
settings.TryGetValue<City>("city", out City1);
将存储在IsolatedStorageSettings中的数据绑定到对象
这个例子向我们展示如何将存储在IsolatedStorageSettings中的数据绑定到一个复合对象:
<TextBlock Text="{Binding Name}" FontSize="50"/>
<Image Source="{Binding Flag}" Stretch="None" HorizontalAlignment="Left"/>
//Retrieve City Data
City City1;
settings.TryGetValue<City>("city", out City1);
this.DataContext = City1;
下面是这个结果截图:
最佳实践
在获取数据之前总是要检查目标对象是否存在于IsolatedStorageSetttings中!注意所有的键/值对在IsolatedStorageSettings中都是唯一的,所以在保存数据到settings之前必须要确保这个键是唯一的。你可以使用像下面这样的代码去检查唯一性:
if(settings.Contains("myemail"))
{
...
}
你可以从这个获取所有的源代码:WP7IsolatedStorageSettingsExample
在这篇文章中我谈到了在IsolatedStorageSettings中的数据存储。我希望这个能对你有帮助。敬请期待接下来的文章。