2010-11-21 106 views
2

我有一个简单的Silverlight WP7应用程序,它读取在线XML文件的内容并显示它们。但是,总共可能有150个项目,并且通过它们滚动都可能相当不方便。所以,我想制作一个“收藏夹”页面。当您单击列表上的任何项目时,它会将其写入应用程序包中的单独XML文件。在写入XML之后,我需要确保它每次加载应用程序时都会更新列表,而不是在写入时严格保存该条目的内容。什么方法是最好的方式去做这件事?将在线XML文件中的条目写入独立存储

回答

5

首先,您使用IsolateStorageFile.GetUserStoreForApplication()获得相关的IsolatedStorageFile,然后使用IsolatedStorageFile.CreateFile创建一个文件。返回一个Stream,您可以以正常的方式写:

using (var storage = IsolateStorageFile.GetUserStoreForApplication()) 
using (var stream = storage.CreateFile("test.xml")) 
{ 
    doc.Save(stream); // Where doc is an XDocument 
} 

就这么简单。

一个关键点是避免将IsolatedStorageFile作为单个文件考虑 - 将其视为整个应用程序的驱动器。它可以包含文件,目录等。它可能最终成为本地文件系统中的单个文件,但是您的应用程序不需要知道或关心它。

+0

难道我不能在它写入的项目中创建一个“favorites.xml”文件吗?或者这是一个不太有效的方法? – Dan 2010-11-21 21:00:54

+0

创建单个文件正是你应该做的。只是IsolatedStorageFile是一个代表整个存储单元的对象。 – 2010-11-21 21:09:42

+0

@ user502672:如果你在项目中创建了一个文件,那最终将成为XAP文件中的一个资源 - 我非常怀疑你可以从应用程序写入。 – 2010-11-21 21:13:44

1

您可以将项目存储到IsolatedStorage中的XML文件,就像您对任何其他文件所做的一样。

当应用程序被加载,你需要设置的行动(在App.xaml.cs)的Application_Launching事件处理程序 - 例如,你可以创建一个将被绑定到ListView元素将一个List从加载的XML文件中获取包含元素。

相关问题