2015-12-02 6 views
4

У меня проблема с сохранением настроек моего приложения? Я создаю универсальное приложение для Windows 10, и у меня есть слайдер, значение которого я хочу сохранить.Как сохранить настройки моего приложения?

я использовать этот код, чтобы сохранить его:

private void musicVolume_ValueChanged(object sender, RangeBaseValueChangedEventArgs e) 
    { 
     ApplicationDataContainer AppSettings = ApplicationData.Current.LocalSettings; 
     AppSettings.Values["musicV"] = musicVolume.Value; 
    } 

И constuctor страницы У меня есть эти строки кода:

ApplicationDataContainer AppSettings = ApplicationData.Current.LocalSettings; 

     if (AppSettings.Values.ContainsKey("musicV")) 
     { 
      musicVolume.Value = Convert.ToDouble(AppSettings.Values["musicV"]); 
     } 

Он должен показать новое значение, когда я иду на эту страницу , но он этого не делает, он всегда показывает последний по умолчанию. Почему это не работает и как заставить его работать?

PS: извините за мой плохой английский ...

+1

Попробуйте записать эти значения в 'Settings.setting' потому что app.config сбрасывается установкой заданного значения где бы вы ни построили код. – Irshad

+1

http://stackoverflow.com/questions/3032492/save-settings-in-a-net-winforms-application – Irshad

+0

См. [На этой странице] (https://msdn.microsoft.com/en-us/library/windows /apps/mt299098.aspx) для управления настройками приложения в приложении Windows 10 Universal – stuartd

ответ

1

Вы могли бы попытаться инкапсулировать параметры в класс «SettingsManager», как описанный в этой статье: https://stackoverflow.com/a/33754414/1694281

Как что вы бы обязательно сразу имеют доступ к последнему присвоенному значению без какой-либо проблемы с синхронизацией. (А вы могли бы также сделать связь с ним.)

1

В конце концов я переопределить OnNavigatedFrom метод:

protected override void OnNavigatedFrom(NavigationEventArgs e) 
{ 
    ApplicationDataContainer AppSettings = ApplicationData.Current.LocalSettings; 
    AppSettings.Values["musicV"] = musicVolume.Value; 
} 

Теперь сохранить настройки, когда вы покидаете страницу, и это работа. Я до сих пор не понимаю, почему метод из моего ответа не работал. Очевидно, что есть проблема с событием ValueChanged.

@nhuau: ваше решение выглядит хорошо, но я начинаю и не понимаю, как применить его к моей проблеме. Но я буду помнить об этом и когда-нибудь в будущем вернусь к нему.

6

Вместо того, чтобы в конструкторе выполнить инициализацию musicVolume.Value после загрузки страницы, подписавшись на страницу Загружено событие в конструкторе. Событие Загружено - это подходящее место для такой инициализации.

Например, в конструкторе добавить:

Loaded += Page_Loaded; 

и ваш обработчик события Loaded, как:

private void Page_Loaded(object sender, RoutedEventArgs e) 
{ 
    ApplicationDataContainer AppSettings = ApplicationData.Current.LocalSettings; 

    if (AppSettings.Values.ContainsKey("musicV")) 
    { 
     musicVolume.Value = (double)AppSettings.Values["musicV"]; 
    } 
} 
+0

Thaks для консультаций, но каковы на самом деле преимущества этого способа? – ja13

+2

В загруженном обработчике событий вы знаете, что элемент управления (в вашем случае с именем musicVolume) правильно инициализирован. Подробнее [здесь] (https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.frameworkelement.loaded). – user5525674

Смежные вопросы