2017-10-11 6 views
-1

私は2つのウィンドウを持つこのプロジェクトを持っています。インスタンス化された新しいウィンドウが閉じられると、そのインスタンスを保存するにはどうすればよいですか?

MainWindowとSecondaryWindow &私は、SecondaryWindowの新しいインスタンスを初期化するMainWindowのボタンを持っています。&が開きます。私はSecondaryWindow上のチェックボックスをチェックし、それを閉じると

SecondaryWindow sw = new SecondaryWindow(); 
sw.Show(); 

問題は、それが私は再びそれを開くウィンドウをクリアし、...です。なぜ開くのか分かりますNEW毎回ウィンドウの不在。 保存方法を教えてください。

私は

sw.Show(); 

...メインウィンドウ

SecondaryWindow sw; 

そして、これを行う中

public static SecondaryWindow instance; 
public SecondaryWindow() 
     { 
      InitializeComponent(); 
      instance = this; 
     } 

そして、この..これをやってみましたが、その行はというエラーがスローされますそれはヌルだ

私はそれが私がやろうとしていたシングルトンと呼んでいると思います。

+0

何を理解することは本当に難しいですあなたは成功したいですが、私は試してみます。ウィンドウを保存する必要はないかもしれませんが、いくつかの値を保存して、再度開いたときにウィンドウにこれらの値を適用するだけです。私は正しい? – Valerii

+0

静的フィールドを作成したときに起こりそうなことを説明できますか?あなたは、それが有用な何かをするだろうと結論づけた推論プロセスを歩くことができますか? –

答えて

0

グローバル変数にチェックボックスの値をバインドします。

App.Current.Properties["NameOfProperty"] = "ValueOfProperty"; 
string myProperty = App.Current.Properties["NameOfProperty"]; 

このように、グローバル変数を読み書きすることができます。このようにして、チェックボックスの値を保持することができます。

1

すでに閉じられているウィンドウのShow()メソッドを呼び出すことはできません。あなたは何ができるか

は、CheckBoxIsCheckedプロパティの値を追跡し、ビューモデルクラスを作成し、このクラスのインスタンスにSecondaryWindowDataContextを設定し、ソースにビューでCheckBoxをバインドすることですプロパティ、例えば:

public class MainWindow : Window 
{ 
    private readonly ViewModel _vm = new ViewModel(); 

    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    private void Open_Click(object sender, RoutedEventArgs e) 
    { 
     SecondaryWindow sw = new SecondaryWindow(); 
     sw.DataContext = _vm; 
     sw.Show(); 
    } 
} 

public class ViewModel 
{ 
    public bool IsChecked { get; set; } 
} 

SecondaryWindow.xaml:

<CheckBox Content="Check" IsChecked="{Binding IsChecked}" /> 
関連する問題