将 ToggleSwitch 的状态存储到 C# 和 XAML 中的变量中
Storing the state of a ToggleSwitch Into A Variable in C# and XAML
编辑: 已解决。我睡着了,布拉德利的评论对我帮助很大!谢谢!
所以我有一系列的拨动开关。以下是设置方式:
<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" />
在后面的代码中,我有这样的设置:
// Parent Toggle (resets everything)
private void PrimaryToggle_Toggled(object sender, RoutedEventArgs e)
{
if (PrimaryToggle.IsOn == true)
{
Child1Toggle.IsOn = false;
Child2Toggle.IsOn = true;
Child3Toggle.IsOn = false;
Child4Toggle.IsOn = true;
}
else if (PrimaryToggle.IsOn == false)
{
this.allToggles(false);
}
}
/* This is where I need to store the current state of the child toggles
so when it turns off it will restore the saved state of them */
private void SecondaryToggle_Toggled(object sender, RoutedEventArgs e)
{
if (SecondaryToggle.IsOn == true)
{
/* Need to store current state of children toggles
In this section here: */
Child1Toggle.IsOn = true;
Child2Toggle.IsOn = true;
Child3Toggle.IsOn = false;
Child4Toggle.IsOn = false;
}
if (SecondaryToggle.IsOn == false && PrimaryToggle.IsOn == true)
{
/* Need to restore previous state of children
toggles in this section here: */
}
}
所以问题是我对 C# 还很陌生,所以我正在尝试找到处理这个问题的最佳方法。根据之前的研究,我得出的结论是我可能需要使用 INotifyPropertyChanged,然后在我需要保存的所有切换上设置绑定,但我真的不知道从哪里开始。我做了一些{得到;放; } 前一段时间的东西,但有一段时间没有使用它,所以我几乎有一个brainfart。
有什么关于从哪里开始的建议吗?
谢谢!
所以这个解决方案不是最优雅的,但它确实有效,所以我们开始吧。
您需要在 class 中声明一些可以存储 ToggleSwitch 状态的布尔值:
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;
}
}
这会将数据设置回之前的状态。
希望这对其他人有帮助!再一次,我知道这可能不是最好的解决方案,并且可能有一种很好的方法可以将很多这些东西分类到其他 classes 等等,如果我很快学会这些,我一定会更新这个 post 和那个信息!
编辑: 已解决。我睡着了,布拉德利的评论对我帮助很大!谢谢!
所以我有一系列的拨动开关。以下是设置方式:
<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" />
在后面的代码中,我有这样的设置:
// Parent Toggle (resets everything)
private void PrimaryToggle_Toggled(object sender, RoutedEventArgs e)
{
if (PrimaryToggle.IsOn == true)
{
Child1Toggle.IsOn = false;
Child2Toggle.IsOn = true;
Child3Toggle.IsOn = false;
Child4Toggle.IsOn = true;
}
else if (PrimaryToggle.IsOn == false)
{
this.allToggles(false);
}
}
/* This is where I need to store the current state of the child toggles
so when it turns off it will restore the saved state of them */
private void SecondaryToggle_Toggled(object sender, RoutedEventArgs e)
{
if (SecondaryToggle.IsOn == true)
{
/* Need to store current state of children toggles
In this section here: */
Child1Toggle.IsOn = true;
Child2Toggle.IsOn = true;
Child3Toggle.IsOn = false;
Child4Toggle.IsOn = false;
}
if (SecondaryToggle.IsOn == false && PrimaryToggle.IsOn == true)
{
/* Need to restore previous state of children
toggles in this section here: */
}
}
所以问题是我对 C# 还很陌生,所以我正在尝试找到处理这个问题的最佳方法。根据之前的研究,我得出的结论是我可能需要使用 INotifyPropertyChanged,然后在我需要保存的所有切换上设置绑定,但我真的不知道从哪里开始。我做了一些{得到;放; } 前一段时间的东西,但有一段时间没有使用它,所以我几乎有一个brainfart。
有什么关于从哪里开始的建议吗?
谢谢!
所以这个解决方案不是最优雅的,但它确实有效,所以我们开始吧。
您需要在 class 中声明一些可以存储 ToggleSwitch 状态的布尔值:
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;
}
}
这会将数据设置回之前的状态。
希望这对其他人有帮助!再一次,我知道这可能不是最好的解决方案,并且可能有一种很好的方法可以将很多这些东西分类到其他 classes 等等,如果我很快学会这些,我一定会更新这个 post 和那个信息!