2017-10-11 72 views
-1

所以我有兩個窗口這個項目。如何在關閉時保存新實例窗口的UI?

MainWindow和SecondaryWindow &我在MainWindow上有一個按鈕,用於初始化SecondaryWindow的新實例&將其打開。

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

的問題是..當我檢查了SecondaryWindow複選框,然後關閉它,它會清除,當我再次打開它的窗口。我知道爲什麼,因爲它每次都會打開窗口的窗口。 如何保存?

我試着這樣做..

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

然後這在主窗口

SecondaryWindow sw; 

,然後做這個..

sw.Show(); 

,但該行拋出一個錯誤說它是空的

我認爲這就是所謂的單身人士,我正在嘗試做什麼。

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