Windows Phone 8 ApplicationSettings — получить настройки в универсальном приложении

Я обновляю приложение 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):\

Большое спасибо за помощь


person user3905621    schedule 04.08.2014    source источник


Ответы (3)


LocalSettings в WP8.1 работает иначе, чем те, что в WP8.0 - где настройки сохранялись в файл (после сериализации). Это файл __ApplicationSettings — взгляните на него (с помощью инструмента IS Explorer), и вы увидите его структуру — часть его представляет собой сериализованный словарь. Однажды я провел некоторое исследование, которое показало, что все старые файлы сохраняются во время обновления, а это означает, что настройки все еще там.

Как только вы обновите приложение WP8.0 до WP8.1 и захотите прочитать свои старые настройки, вы можете получить значения из файла.

person Romasz    schedule 04.08.2014
comment
Файл __ApplicationSettings представляет собой словарь, сериализованный на диск с помощью DataContractSerializer. Я не нашел хорошего способа вернуть его к настройкам/объектам для общего случая, но индивидуальное решение для конкретного приложения работает. Вам просто нужно немного поиграть. - person Adam; 04.08.2014
comment
@ Адам Ты прав. Думал, что я все еще не десериализовал настройки, но после просмотра его структуры кажется, что, когда вы знаете, какой тип вы сохранили, это не должно быть сложно сделать для конкретного решения. - person Romasz; 05.08.2014

Это сообщение в блоге ваш точный ответ, включая код, необходимый для десериализации перенесенного файла настроек!

person Andrew Leader    schedule 01.01.2016

Вы можете использовать ApplicationData.LocalSettings Это даст вам контейнер настроек приложения в локальном хранилище данных приложения. вот Центр разработки, в котором описано, как им пользоваться.

person Amit Bhatiya    schedule 04.08.2014
comment
Да, но, как видно из кода, я не получаю никаких значений для MY_SETTINGS. - person user3905621; 04.08.2014
comment
ты это реализовал? в первую очередь задайте значения, а уже после этого пытайтесь их получить. есть также еще часть для доступа к вашей переменной настроек в ссылку - person Amit Bhatiya; 04.08.2014