Windows Phone 8.1: 在应用程序中保存列表 settings/storage
Windows Phone 8.1: Save list in app settings/storage
我刚开始开发 Windows Phone 8.1 应用程序。
该应用程序允许用户将 'data'(字符串)添加到他的 favorites-list。
现在的问题是:
保存列表或列表的单个条目的最佳方式是什么,以便我可以在下次启动应用程序时再次加载这些收藏夹?
我想我应该将数据保存到一个(文本)文件中,这样我就可以逐行读取它并再次将列表放在一起。
您怎么看,这是处理此类事情的最佳方式吗?我是 Windows Phone 8.1 平台的新手,非常感谢任何帮助 - 谢谢!
最佳方法取决于数据大小和您的需要。至于将其保存在“设置”中,您可以尝试在保存时制作一个字符串数组,并在加载数据时制作列表。简单示例如下所示:
List<string> favourites = new List<string>();
protected void Method()
{
// save as array
ApplicationData.Current.LocalSettings.Values["myList"] = favourites.ToArray();
// retrive your array and make a list from it
favourites = ((string[])ApplicationData.Current.LocalSettings.Values["myList"]).ToList();
}
请记住 LocalSettings 仅支持简单类型并且有其他限制 - 了解更多信息 take a look at MSDN。
我想我终于让它工作了。应该早点考虑类似的事情。
所以我得到了我的 async Task SaveAppSettingsAsync() 并在应用程序关闭时在挂起事件和我的 Hardwarebuttons_Pressed-Event 中调用它:
private async void OnSuspending(object sender, SuspendingEventArgs e)
{
var deferral = e.SuspendingOperation.GetDeferral();
await SaveAppSettingsAsync();
deferral.Complete();
}
private async void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
{
Frame rootFrame = Window.Current.Content as Frame;
if (rootFrame != null)
{
e.Handled = true;
if (rootFrame.CurrentSourcePageType == typeof(MainPage))
{
await SaveAppSettingsAsync();
this.Exit();
}
else if (rootFrame.CanGoBack)
rootFrame.GoBack();
}
}
感谢您的帮助。我想我现在更了解如何处理异步任务了。正如我所说 - 我是 Windows Phone 的新手,之前从未真正使用过它们。
我刚开始开发 Windows Phone 8.1 应用程序。
该应用程序允许用户将 'data'(字符串)添加到他的 favorites-list。 现在的问题是:
保存列表或列表的单个条目的最佳方式是什么,以便我可以在下次启动应用程序时再次加载这些收藏夹?
我想我应该将数据保存到一个(文本)文件中,这样我就可以逐行读取它并再次将列表放在一起。
您怎么看,这是处理此类事情的最佳方式吗?我是 Windows Phone 8.1 平台的新手,非常感谢任何帮助 - 谢谢!
最佳方法取决于数据大小和您的需要。至于将其保存在“设置”中,您可以尝试在保存时制作一个字符串数组,并在加载数据时制作列表。简单示例如下所示:
List<string> favourites = new List<string>();
protected void Method()
{
// save as array
ApplicationData.Current.LocalSettings.Values["myList"] = favourites.ToArray();
// retrive your array and make a list from it
favourites = ((string[])ApplicationData.Current.LocalSettings.Values["myList"]).ToList();
}
请记住 LocalSettings 仅支持简单类型并且有其他限制 - 了解更多信息 take a look at MSDN。
我想我终于让它工作了。应该早点考虑类似的事情。
所以我得到了我的 async Task SaveAppSettingsAsync() 并在应用程序关闭时在挂起事件和我的 Hardwarebuttons_Pressed-Event 中调用它:
private async void OnSuspending(object sender, SuspendingEventArgs e)
{
var deferral = e.SuspendingOperation.GetDeferral();
await SaveAppSettingsAsync();
deferral.Complete();
}
private async void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
{
Frame rootFrame = Window.Current.Content as Frame;
if (rootFrame != null)
{
e.Handled = true;
if (rootFrame.CurrentSourcePageType == typeof(MainPage))
{
await SaveAppSettingsAsync();
this.Exit();
}
else if (rootFrame.CanGoBack)
rootFrame.GoBack();
}
}
感谢您的帮助。我想我现在更了解如何处理异步任务了。正如我所说 - 我是 Windows Phone 的新手,之前从未真正使用过它们。