将切换开关的状态存储到C#和XAML中的变量中
编辑:问题已经解决。我睡了一觉,布拉德利的评论帮了我大忙!谢谢 所以我有一系列的开关。以下是如何设置的:将切换开关的状态存储到C#和XAML中的变量中,c#,xaml,uwp,uwp-xaml,C#,Xaml,Uwp,Uwp Xaml,编辑:问题已经解决。我睡了一觉,布拉德利的评论帮了我大忙!谢谢 所以我有一系列的开关。以下是如何设置的: <ToggleSwitch x:Name="PrimaryToggle" Header="Primary" Toggled="PrimaryToggle_Toggled"/> <ToggleSwitch x:Name="SecondaryToggle" Header="Secondary"
<ToggleSwitch
x:Name="PrimaryToggle"
Header="Primary"
Toggled="PrimaryToggle_Toggled"/>
<ToggleSwitch
x:Name="SecondaryToggle"
Header="Secondary"
Toggled="SecondaryToggle_Toggled"/>
<ToggleSwitch x:Name="Child1Toggle" Header="Child 1" />
<ToggleSwitch x:Name="Child2Toggle" Header="Child 2" />
<ToggleSwitch x:Name="Child3Toggle" Header="Child 3" />
<ToggleSwitch x:Name="Child4Toggle" Header="Child 4" />
所以问题是我对C#还很陌生,所以我正在努力寻找处理这个问题的最佳方法。根据之前的研究,我得出结论,我可能需要使用INotifyPropertyChanged,然后在需要保存的所有切换上设置绑定,但我真的不知道从哪里开始。我以前做过一些{get;set;}的东西,但有一段时间没用了,所以我简直是疯了
关于从哪里开始有什么建议吗
谢谢 所以这个解决方案不是最优雅的,但它确实有效,所以我们开始吧 您需要在类中声明一些布尔值,这些布尔值可以存储切换开关的状态:
public sealed partial class MainPage : Page
{
public bool child1var { get; set; }
public bool child2var { get; set; }
public bool child3var { get; set; }
public bool child4var { get; set; }
设置完这些后,需要在下面设置它们的数据
private void SecondaryToggle_Toggled(object sender, RoutedEventArgs e)
{
if (SecondaryToggle.IsOn == true)
{
// Here we save the state of the Child toggles
// before setting them to a different setting
child1var = Child1Toggle.IsOn;
child2var = Child2Toggle.IsOn;
child3var = Child3Toggle.IsOn;
child4var = Child4Toggle.IsOn;
Child1Toggle.IsOn = true;
Child2Toggle.IsOn = true;
Child3Toggle.IsOn = false;
Child4Toggle.IsOn = false;
}
最后,当我们关闭辅助切换时,我们将其设置回原来的状态:
if (SecondaryToggle.IsOn == false && PrimaryToggle.IsOn == true)
{
Child1Toggle.IsOn = child1var;
Child2Toggle.IsOn = child2var;
Child3Toggle.IsOn = child3var;
Child4Toggle.IsOn = child4var;
}
}
这将使数据恢复到以前的状态
希望这对其他人有帮助!再说一次,我知道这可能不是最好的解决方案,而且可能有一种很好的方法可以将这些东西分类到其他类中,如果我很快学会这些,我一定会用这些信息更新这篇文章 所以这个解决方案不是最优雅的,但它确实有效,所以我们开始吧 您需要在类中声明一些布尔值,这些布尔值可以存储切换开关的状态:
public sealed partial class MainPage : Page
{
public bool child1var { get; set; }
public bool child2var { get; set; }
public bool child3var { get; set; }
public bool child4var { get; set; }
设置完这些后,需要在下面设置它们的数据
private void SecondaryToggle_Toggled(object sender, RoutedEventArgs e)
{
if (SecondaryToggle.IsOn == true)
{
// Here we save the state of the Child toggles
// before setting them to a different setting
child1var = Child1Toggle.IsOn;
child2var = Child2Toggle.IsOn;
child3var = Child3Toggle.IsOn;
child4var = Child4Toggle.IsOn;
Child1Toggle.IsOn = true;
Child2Toggle.IsOn = true;
Child3Toggle.IsOn = false;
Child4Toggle.IsOn = false;
}
最后,当我们关闭辅助切换时,我们将其设置回原来的状态:
if (SecondaryToggle.IsOn == false && PrimaryToggle.IsOn == true)
{
Child1Toggle.IsOn = child1var;
Child2Toggle.IsOn = child2var;
Child3Toggle.IsOn = child3var;
Child4Toggle.IsOn = child4var;
}
}
这将使数据恢复到以前的状态
希望这对其他人有帮助!再说一次,我知道这可能不是最好的解决方案,而且可能有一种很好的方法可以将这些东西分类到其他类中,如果我很快学会这些,我一定会用这些信息更新这篇文章 我不确定是否完全理解您的要求,但听起来您只需要为每个切换声明一个布尔变量来保存状态。您可以在类级别声明它,只需将其设置为切换的
.IsOn
属性以保存它,然后将IsOn
设置为变量的值以重新加载它。对不起,我应该解释得更好一些。基本上,一旦我切换PrimaryToggle,它就会将一些子项切换设置为特定值。在那之后,我可以通过切换孩子来改变一些视觉选项。但是,我有一个secondarytoggle,它将再次更改所有切换,但是如果secondarytoggle设置为IsOn==false,我希望childrentoggles返回到切换secondarytoggle之前的状态;我为我缺乏C#知识而道歉:(我现在正在学习。目前主要是做XAML。好吧,我睡了一觉,你今天早上的评论非常有道理。谢谢@BradleyUffner!这帮助我解决了问题。请在下面的回答中发布更多细节,而不是简单地写“问题已经解决”.我怀疑其他有类似问题的人会接受你的“睡一觉”解决方案我不确定是否完全理解您的要求,但听起来您只需要为每个切换声明一个布尔变量来保存状态。您可以在类级别声明它,然后将其设置为切换的.IsOn
属性来保存它,然后将IsOn
设置为变量的值重新加载。对不起,我应该解释得更清楚一点。基本上,一旦我切换PrimaryToggle,它会将一些子切换设置为特定值。之后,我可以随意切换子切换以更改一些视觉选项。但是,我有第二个切换,它会再次更改所有切换,但我想要childrentoggles如果secondarytoggle设置为IsOn==false,则返回到切换secondarytoggle之前的状态;对于我对C#的了解不足,我深表歉意:(我现在正在学习。目前主要是做XAML。好吧,我睡了一觉,今天早上你的评论非常有意义。谢谢@BradleyUffner!这帮助我解决了问题。请在下面的回答中发布更多细节,而不是简单地写“问题已经解决”。我怀疑其他有类似问题的人会接受你的“睡一觉”解决方案