2016-12-02 70 views
1

编辑:已解决。我睡了,布拉德利的评论帮了我很多忙!谢谢!在C#和XAML中将ToggleSwitch的状态存储到变量中

所以我有一系列ToggleSwitches。这里的怎么样了事情的设置:

<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,然后在所有需要保存的切换上设置绑定,但我真的不知道从哪开始。我做了一些{get;组; }一段时间的东西,但有一段时间没有使用它,所以我几乎有一个brainfart。

有关从哪里开始的建议?

谢谢!

+0

我不确定我是否完全理解你所要求的内容,但听起来你只需要为每个切换声明一个布尔变量来保存状态。您可以在类级别声明它,并将其设置为切换的'.IsOn'属性以保存它,然后将'IsOn'设置为该变量的值以重新加载它。 –

+0

对不起,我应该更好的解释一下。基本上,一旦我切换PrimaryToggle,它会设置一些孩子切换到特定的值。在那之后,我可以捣乱孩子切换一些视觉选项。但是,然后我有次会话会再次改变所有的切换,但是我希望childrentoggles返回到它们在切换次密码之前的状态,如果次密码设置为IsOn == false; –

+0

我对C#知识的缺乏表示抱歉::(我现在在学习,现在主要是在做XAML, –

回答

0

所以这个解决方案并不是最优雅的,但它工作,所以我们走了。

您需要声明类中的一些布尔变量可以存储你的ToggleSwitches的状态:

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; 
    } 
} 

这组将数据恢复到之前的状态。

希望这可以帮助别人!再次,我知道这可能不是最好的解决方案,并且可能有很多方法将很多这些东西排序到其他类中,如果我很快就会学到这些东西,我一定会用这些信息更新这篇文章!