2016-12-02 21 views
1

編集:解決済みです。私はそれで眠って、ブラッドリーのコメントは私にトンを助けた!ありがとう!ToggleSwitchの状態をC#とXAMLの変数に格納する

私は一連のToggleSwitchesを持っています。

// 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#にはかなり新しいですです:私はものを持って後ろに、このようなセットアップコードで

<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" /> 

:ここではノウハウのものが設定されていますこれを処理する最善の方法。これまでの研究に基づいて、私はINotifyPropertyChangedを使用し、保存する必要があるすべてのトグルでバインディングを設定する必要があるかもしれないという結論に達しましたが、実際にどこから始めるべきかわかりません。私はいくつかをやった{取得;セット; }しばらくして使ってみたが、しばらく使っていないので、私は脳を持っている。

どこから始めたらよいですか?

ありがとうございます!

+0

私はあなたが求めているものを正確に理解しているかどうかはわかりませんが、各トグルに対してブール変数を宣言して状態を保存する必要があるようです。クラスレベルで宣言し、トグルの '.IsOn'プロパティに設定して保存し、' IsOn'を変数の値に設定してリロードします。 –

+0

申し訳ありませんが、私はそれを少し良く説明していたはずです。基本的にPrimaryToggleを切り替えると、少数の子供が特定の値に切り替わるように設定されます。その後、私は子供と一緒にいくつかの視覚的なオプションを変更するために切り替えることができます。しかし、私は再びすべてのトグルを変更するセカンダリトグルを持っていますが、セカンダリトグルがIsOn == falseに設定されている場合、セカンダリトグルをトグルする前の状態に戻るようにします。 –

+0

私はC#の知識が不足していることをお詫びします。(私は現時点では学んでいますが、今は主にXAMLを行っています –

答えて

0

このソリューションは最もエレガントではありませんが、機能するため、ここで取り上げます。

あなたのToggleSwitchesの状態を保存することができますクラスのいくつかのboolsを宣言する必要があります:あなたがそれらを設定している

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

このセット:私たちは二トグルをオフにしたときに

は最後に、我々は戻って、それが何だったかに設定します以前のデータに戻ります。

これは他の人に役立つことを願っています!繰り返しますが、これはおそらく最善の解決策ではないことは知っていますが、他のクラスにこのようなものをたくさん並べ替える良い方法があります。そして、それらをすぐに学ぶなら、その情報でこの投稿を更新します!

関連する問題