Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows phone 8.1 应用程序重新启动后,切换开关不保持状态_Windows Phone 8.1 - Fatal编程技术网

Windows phone 8.1 应用程序重新启动后,切换开关不保持状态

Windows phone 8.1 应用程序重新启动后,切换开关不保持状态,windows-phone-8.1,Windows Phone 8.1,我使用的切换开关工作正常,直到我重新启动应用程序。重新启动应用程序后,切换开关不会保持以前的更改并恢复为默认状态。我怎样才能解决这个问题 更新:这就是我试图将切换开关值保存到本地设置的方式 private void ThemeToggle_switch(object sender, RoutedEventArgs e) { if (ThemeToggle.IsOn) { (Frame).RequestedTheme = Elem

我使用的切换开关工作正常,直到我重新启动应用程序。重新启动应用程序后,切换开关不会保持以前的更改并恢复为默认状态。我怎样才能解决这个问题

更新:这就是我试图将切换开关值保存到本地设置的方式

private void ThemeToggle_switch(object sender, RoutedEventArgs e)
    {


        if (ThemeToggle.IsOn)
        {
            (Frame).RequestedTheme = ElementTheme.Light;
            Windows.Storage.ApplicationData.Current.LocalSettings.Values["ThemeToggle"] = "Light";
            Windows.Storage.ApplicationData.Current.LocalSettings.Values["ThemeToggleValue"] = "on";


        }
        else (Frame).RequestedTheme = ElementTheme.Dark;
        Windows.Storage.ApplicationData.Current.LocalSettings.Values["ThemeToggle"] = "Dark";

        Windows.Storage.ApplicationData.Current.LocalSettings.Values["ThemeToggleValue"] = "off";

    }
在App.xamls.cs中,我将本地设置值设置如下:

var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
localSettings.Values["ThemeToggle"] = "Dark";
localSettings.Values["ThemeToggleValue"] = "off";
逻辑工作正常,切换开关工作正常,主题正在改变。但是,只要我关闭并重新启动应用程序,我的应用程序就会保持选定的主题,但切换按钮不会保持其状态。这就是我的Xaml代码的样子:

<ToggleSwitch x:Uid="ThemeToggle"  x:Name="ThemeToggle" OnContent="Dark Theme" OffContent="Light Theme" Toggled="ThemeToggle_switch" HorizontalContentAlignment="Stretch" Margin="10,20,6,10" Height="65"/>


我怀疑这可能与在本地设置中添加/替换/读取值有关,但我不知道如何修复它。感谢您的帮助。

一旦启动应用程序并创建UI,您就可以决定控件的状态。如果您没有将交换机的前一状态保存在某个位置(例如在LocalSettings中),那么它将始终具有默认值。最简单的方法可能是为此使用设置,或者使用双向绑定来获取/设置适当属性的值。@Romasz:看起来开关所做的更改在应用程序重新启动后仍然存在,但在开关状态下不存在。那么我不理解你的问题-请更好地指定它,输入一些你尝试过的代码。另外,请确保您讨论的是应用程序重启/暂停/其他。以下是我到目前为止尝试过的:private void ThemeToggle_开关(对象发送方,RoutedEventArgs e){if(ThemeToggle.IsOn){(Frame.RequestedTheme=ElementTheme.Light;}else(Frame).RequestedTheme=ElementTheme.Dark;}当我切换开关时,应用程序主题会发生完美的变化。重新启动时,应用程序会保持修改后的主题,但切换开关不会。它将恢复为其默认值,即关闭。我希望切换开关保持其状态以反映所选主题。将IsOn preperty绑定到将从LocalSettings加载/保存的属性,使用双向绑定,还可能需要使用合适的转换器。