【问题标题】:Windows Phone 8 ApplicationSettings - Get settings in Universal appWindows Phone 8 ApplicationSettings - 在通用应用程序中获取设置
【发布时间】:2014-08-04 07:15:07
【问题描述】:

我正在升级 windows phone 8 应用程序。我创建了通用应用程序 (Windows.Phone 8.1)。

旧版 WP8.0 应用程序中的设置保存方式如下:

IsolatedStorageSettings.ApplicationSettings.Add("MY_SETTINGS", value);

问题: 应用升级到 WP8.1(通用应用)后如何获取此设置。

我尝试以下方法:

var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
var isContains1 = localSettings.Values.ContainsKey("MY_SETTINGS");
var roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings;
var isContains2 = roamingSettings.Values.ContainsKey("MY_SETTINGS");

但没有找到“MY_SETTINGS”。 (isContains1, isContains2 == false):\

非常感谢您的帮助

【问题讨论】:

    标签: windows-phone-8 windows-phone-8.1 win-universal-app


    【解决方案1】:

    LocalSettings 在 WP8.1 中的工作方式与 WP8.0 中的不同 - 设置保存在文件中(序列化后)。该文件是 __ApplicationSettings - 看看它(通过 IS 资源管理器工具),您会看到它的结构 - 它的一部分是一个序列化字典。我做过一次some research,显示更新过程中保留了所有旧文件——这意味着设置仍然存在。

    一旦您将 WP8.0 应用程序更新到 WP8.1 并且想要读取旧设置,您可以从文件中检索值。

    【讨论】:

    • __ApplicationSettings 文件是使用DataContractSerializer 序列化到磁盘的字典。对于一般情况,我还没有找到一种将其重新水化回设置/对象的好方法,但是针对特定应用程序的自定义解决方案可以工作。你只需要玩一会儿。
    • @Adam 你是对的。以为我仍然没有对设置进行反序列化,但是在查看其结构之后,似乎当您知道自己保存了哪种类型时,对于特定的解决方案应该不是一件难事。
    【解决方案2】:

    This blog post 有你的确切答案,包括反序列化迁移的设置文件所需的代码!

    【讨论】:

      【解决方案3】:

      您可以使用ApplicationData.LocalSettings 它会为您获取本地应用程序数据存储中的应用程序设置容器。这是一个Dev center 链接,其中描述了如何使用它。

      【讨论】:

      • 是的,但正如您从代码截图中看到的那样,我没有得到“MY_SETTINGS”的任何值
      • 你实现了吗?首先设置值,然后尝试获取它。您的设置变量访问链接还有一个 else 部分
      猜你喜欢
      • 1970-01-01
      • 2017-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多