2015-12-02 40 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/zh-cn/library/windows /apps/mt299098.aspx)以了解如何在Windows 10通用应用程序中管理应用程序设置 – stuartd

回答

1

你可以尝试封装设置成在这篇文章中所描述的“设置管理”类,如: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 for advise,但这种方式的实际好处是什么? – ja13

+2

在Loaded事件处理程序中,您知道控制元素(在您的情况下名称为musicVolume)已正确初始化。更多信息[在这里](https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.frameworkelement.loaded)。 – user5525674

相关问题