C# UWP C仅执行切换开关的一个本地设置
我在设置页面中使用了4个切换开关。我将这些值保存在本地设置中,这样当用户重新启动应用程序时,设置仍然适用。但是,当我在重新启动页面时选择set to on multiple toggle switches(设置为打开多个切换开关)时,只有第一个位置最高的开关(也是代码中的最高开关)处于打开状态 这是我的代码: .cs .XAMLC# UWP C仅执行切换开关的一个本地设置,c#,xaml,caching,C#,Xaml,Caching,我在设置页面中使用了4个切换开关。我将这些值保存在本地设置中,这样当用户重新启动应用程序时,设置仍然适用。但是,当我在重新启动页面时选择set to on multiple toggle switches(设置为打开多个切换开关)时,只有第一个位置最高的开关(也是代码中的最高开关)处于打开状态 这是我的代码: .cs .XAML 消息以随机顺序出现,因此我认为这就是问题所在。您可以使用两种不同的方法解决此问题: 通过为每个ToggleSwitch创建自己的ToggledEventHandler。
消息以随机顺序出现,因此我认为这就是问题所在。您可以使用两种不同的方法解决此问题: 通过为每个ToggleSwitch创建自己的ToggledEventHandler。 通过使用布尔字段跟踪构造函数何时完成 现在的问题是,您的构造函数正在调用ToggleSwitch\u Toggled-method。当代码设置toggleSwitchPushNotifications.IsOn时会发生这种情况。此时,您尚未初始化其他切换开关,因此它们的IsOn为false。这将覆盖其当前设置 选择1 因此,在XAML中,为每个ToggleSwitch定义自己的Toggled eventhandler:
<ToggleSwitch Margin="10,10,10,5" Grid.Row="0" Foreground="White" x:Name="toggleSwitchPushNotifications" Header="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut eu. " HorizontalAlignment="Left" VerticalAlignment="Top" Toggled="ToggleSwitchPushNotifications_OnToggled"/>
<ToggleSwitch Margin="10,10,10,5" Grid.Row="1" Foreground="White" x:Name="toggleSwitchFullScreen" Header="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut eu. " HorizontalAlignment="Left" VerticalAlignment="Top" Toggled=" ToggleSwitchFullScreen_OnToggled"/>
<ToggleSwitch Margin="10,10,10,5" Grid.Row="2" Foreground="White" x:Name="toggleSwitchDataCollecting" Header="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut eu. " HorizontalAlignment="Left" VerticalAlignment="Top" Toggled=" ToggleSwitchDataCollecting_OnToggled"/>
<ToggleSwitch Margin="10,10,10,5" Grid.Row="3" Foreground="White" x:Name="toggleSwitchTest" Header="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut eu. " HorizontalAlignment="Left" VerticalAlignment="Top" Toggled="ToggleSwitchTest_OnToggled"/>
选择2
或者,您可以使用布尔变量跳过从构造函数切换的ToggleSwitch_调用:
private bool initializing = true;
public MainPage()
{
this.InitializeComponent();
toggleSwitchPushNotifications.IsOn = Convert.ToBoolean(App.localSettings.Values["PushNotifications"]);
toggleSwitchFullScreen.IsOn = Convert.ToBoolean(App.localSettings.Values["FullScreen"]);
toggleSwitchDataCollecting.IsOn = Convert.ToBoolean(App.localSettings.Values["DataCollecting"]);
toggleSwitchTest.IsOn = Convert.ToBoolean(App.localSettings.Values["Test"]);
initializing = false;
}
private void ToggleSwitch_Toggled(object sender, RoutedEventArgs e)
{
if (initializing) return;
App.localSettings.Values["PushNotifications"] = toggleSwitchPushNotifications.IsOn;
App.localSettings.Values["FullScreen"] = toggleSwitchFullScreen.IsOn;
App.localSettings.Values["DataCollecting"] = toggleSwitchDataCollecting.IsOn;
App.localSettings.Values["Test"] = toggleSwitchTest.IsOn;
}
toggleSwitchPushNotifications.IsOn = Convert.ToBoolean(App.localSettings.Values["PushNotifications"]);
MessageDialog msgDialog0 = new MessageDialog("0.");
msgDialog0.ShowAsync();
toggleSwitchFullScreen.IsOn = Convert.ToBoolean(App.localSettings.Values["FullScreen"]);
MessageDialog msgDialog1 = new MessageDialog("1.");
msgDialog1.ShowAsync();
toggleSwitchDataCollecting.IsOn = Convert.ToBoolean(App.localSettings.Values["DataCollecting"]);
MessageDialog msgDialog2 = new MessageDialog("2.");
msgDialog2.ShowAsync();
toggleSwitchTest.IsOn = Convert.ToBoolean(App.localSettings.Values["Test"]);
MessageDialog msgDialog3 = new MessageDialog("3.");
msgDialog3.ShowAsync();
<ToggleSwitch Margin="10,10,10,5" Grid.Row="0" Foreground="White" x:Name="toggleSwitchPushNotifications" Header="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut eu. " HorizontalAlignment="Left" VerticalAlignment="Top" Toggled="ToggleSwitchPushNotifications_OnToggled"/>
<ToggleSwitch Margin="10,10,10,5" Grid.Row="1" Foreground="White" x:Name="toggleSwitchFullScreen" Header="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut eu. " HorizontalAlignment="Left" VerticalAlignment="Top" Toggled=" ToggleSwitchFullScreen_OnToggled"/>
<ToggleSwitch Margin="10,10,10,5" Grid.Row="2" Foreground="White" x:Name="toggleSwitchDataCollecting" Header="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut eu. " HorizontalAlignment="Left" VerticalAlignment="Top" Toggled=" ToggleSwitchDataCollecting_OnToggled"/>
<ToggleSwitch Margin="10,10,10,5" Grid.Row="3" Foreground="White" x:Name="toggleSwitchTest" Header="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut eu. " HorizontalAlignment="Left" VerticalAlignment="Top" Toggled="ToggleSwitchTest_OnToggled"/>
public MainPage()
{
this.InitializeComponent();
toggleSwitchPushNotifications.IsOn = Convert.ToBoolean(App.localSettings.Values["PushNotifications"]);
toggleSwitchFullScreen.IsOn = Convert.ToBoolean(App.localSettings.Values["FullScreen"]);
toggleSwitchDataCollecting.IsOn = Convert.ToBoolean(App.localSettings.Values["DataCollecting"]);
toggleSwitchTest.IsOn = Convert.ToBoolean(App.localSettings.Values["Test"]);
}
private void ToggleSwitchFullScreen_OnToggled(object sender, RoutedEventArgs e)
{
App.localSettings.Values["FullScreen"] = toggleSwitchFullScreen.IsOn;
}
private void ToggleSwitchDataCollecting_OnToggled(object sender, RoutedEventArgs e)
{
App.localSettings.Values["DataCollecting"] = toggleSwitchDataCollecting.IsOn;
}
private void ToggleSwitchTest_OnToggled(object sender, RoutedEventArgs e)
{
App.localSettings.Values["Test"] = toggleSwitchTest.IsOn;
}
private void ToggleSwitchPushNotifications_OnToggled(object sender, RoutedEventArgs e)
{
App.localSettings.Values["PushNotifications"] = toggleSwitchPushNotifications.IsOn;
}
private bool initializing = true;
public MainPage()
{
this.InitializeComponent();
toggleSwitchPushNotifications.IsOn = Convert.ToBoolean(App.localSettings.Values["PushNotifications"]);
toggleSwitchFullScreen.IsOn = Convert.ToBoolean(App.localSettings.Values["FullScreen"]);
toggleSwitchDataCollecting.IsOn = Convert.ToBoolean(App.localSettings.Values["DataCollecting"]);
toggleSwitchTest.IsOn = Convert.ToBoolean(App.localSettings.Values["Test"]);
initializing = false;
}
private void ToggleSwitch_Toggled(object sender, RoutedEventArgs e)
{
if (initializing) return;
App.localSettings.Values["PushNotifications"] = toggleSwitchPushNotifications.IsOn;
App.localSettings.Values["FullScreen"] = toggleSwitchFullScreen.IsOn;
App.localSettings.Values["DataCollecting"] = toggleSwitchDataCollecting.IsOn;
App.localSettings.Values["Test"] = toggleSwitchTest.IsOn;
}