将 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 和那个信息!