我想保存并加载充满历史条目对象的历史列表。我正在尝试通过独立存储来做到这一点,这样当用户打开和关闭应用程序时,他们的浏览历史记录都不会丢失。它被保存,一旦单击应用程序就可以加载它。我环顾四周并在stackoverflow上看到了这个问题,我试图遵循它但遇到了很多错误。隔离存储和保存多个对象。
这是代码
HistoryEntry 类
public string URL { get; set; }
public string timestamp { get; set; }
public string date { get; set; }
主页代码:
using System.Xml.Serialization;
using System.Collections.ObjectModel;
using System.IO;
List<HistoryEntry> urls = new List<HistoryEntry>();
public HistoryEntry selectedHistory;
public MainPage()
{
InitializeComponent();
Deserialize<>(urls, ???);
}
void Browser_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
HistoryEntry urlObj = new HistoryEntry();
urlObj.URL = url;
urlObj.timestamp = DateTime.Now.ToString("HH:mm");
urlObj.date = url.Remove(url.LastIndexOf('.'));
urls.Add(urlObj);
textBox1.Text = url;
listBox.ItemsSource = null;
listBox.ItemsSource = urls;
Serialize(urlObj, urls);
}
private static void Serialize(string fileName, object source)
{
var userStore = IsolatedStorageFile.GetUserStoreForApplication();
using (var stream = new IsolatedStorageFileStream(fileName, FileMode.Create, userStore))
{
XmlSerializer serializer = new XmlSerializer(source.GetType());
serializer.Serialize(stream, source);
}
}
public static void Deserialize<T>(ObservableCollection<T> list, string filename)
{
list = new ObservableCollection<T>();
var userStore = IsolatedStorageFile.GetUserStoreForApplication();
if (userStore.FileExists(filename))
{
using (var stream = new IsolatedStorageFileStream(filename, FileMode.Open, userStore))
{
XmlSerializer serializer = new XmlSerializer(list.GetType());
var items = (ObservableCollection<T>)serializer.Deserialize(stream);
foreach (T item in items)
{
list.Add(item);
}
}
}
}
Serialize 有一些无效参数,与调用 De serialize 时相同。要发送到该方法的适当值是什么,这将成功保存和加载历史对象。
先感谢您 :)
如果您需要更多详细信息,请发表评论,我很乐意进一步详细解释:)