Windows Phone 8.1:在应用程序设置/存储中保存列表

时间:2015-01-31 17:14:31

标签: c# windows-phone-8.1

我刚开始开发Windows Phone 8.1应用程序。

该应用允许用户添加数据' (字符串)到他的收藏夹列表。 现在的问题是:

保存列表或列表的单个条目的最佳方法是什么,以便我可以在下一个应用程序启动时再次加载这些收藏夹?

我以为我应该将数据保存到(文本)文件中,以便我可以逐行阅读并再次将列表放在一起。

您怎么看?这是处理此类事情的最佳方式吗?我是Windows Phone 8.1平台的新手,非常感谢任何帮助 - 谢谢!

2 个答案:

答案 0 :(得分:2)

最佳方法取决于数据大小和您的需求。至于在设置中保存它,您可以尝试在保存时创建一个字符串数组,并在加载数据时创建列表。简单示例可能如下所示:

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

答案 1 :(得分:2)

我想我终于开始工作了。应该考虑更早的事情。

所以我得到了我的异步任务SaveAppSettingsAsync(),只需在应用程序关闭时在Suspending-Event和我的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的新手,之前从未真正使用它们。