如何保存我的应用程序设置

本文关键字:我的 应用程序 设置 保存 何保存 | 更新日期: 2023-09-27 18:25:23

我在保存应用程序设置时遇到问题?我创建了windows 10通用应用程序,我有Slider,我想保存它的值。

我用这个代码保存它:

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

在页面的构建器中,我有以下几行代码:

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

当我转到那个页面时,它应该显示新的值,但它没有,它总是显示最后一个默认值。为什么它不起作用,以及如何使它起作用?

PS:很抱歉我英语不好。。。

如何保存我的应用程序设置

不是在构造函数中,而是在页面加载后通过订阅构造函数中的Pageloaded事件来执行musicVolume.Value初始化。Loaded事件是执行此类初始化的合适位置。

例如,在构造函数中添加:

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"];
    }
}

您可以尝试将您的设置封装到"SettingsManager"类中,如本文所述:https://stackoverflow.com/a/33754414/1694281

这样,您就可以确保立即访问上次分配的值,而不会出现任何同步问题。(您也可以使用它进行绑定。)

最终我会覆盖OnNavigatedFrom方法:

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

现在,当您离开页面并开始工作时,它会保存设置。我现在仍然不明白为什么我答案中的方法不起作用。显然,ValueChanged事件存在一些问题。

@nhuau:你的解决方案看起来不错,但我是初学者,不知道如何将其应用于我的问题。但我会记住这一点,并在未来的某个时候重新考虑它。