Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将切换开关的状态存储到C#和XAML中的变量中_C#_Xaml_Uwp_Uwp Xaml - Fatal编程技术网

将切换开关的状态存储到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!这帮助我解决了问题。请在下面的回答中发布更多细节,而不是简单地写“问题已经解决”。我怀疑其他有类似问题的人会接受你的“睡一觉”解决方案