1
我有3個窗口,我可以在它們之間切換。我遇到的問題是窗口不隱藏時不保存數據。我想他們正在被處置,但我不知道如何。我在兩個窗口上有一個文本框來測試這個。當只有兩個窗口時它工作正常,但添加第三個窗口就產生了這個問題。這是我的主窗口。WPF,在多個窗口之間切換而不處置
public partial class MainWindow : Window
{
private AutoImport auto;
private DTLegacy dleg;
public MainWindow()
{
InitializeComponent();
}
public MainWindow(AutoImport parent)
{
InitializeComponent();
auto = parent;
}
public MainWindow(DTLegacy parent)
{
InitializeComponent();
dleg = parent;
}
private void btnAutoImport_Click(object sender, RoutedEventArgs e)
{
this.Hide();
if (auto == null) { auto = new AutoImport(); }
auto.Show();
}
private void btnDTLegacy_Click(object sender, RoutedEventArgs e)
{
this.Hide();
if (dleg == null) { dleg = new DTLegacy(); }
dleg.Show();
}
}
窗口1
public AutoImport()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
this.Hide();
MainWindow main = new MainWindow(this);
main.Show();
}
窗口2
public DTLegacy()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
this.Hide();
MainWindow main = new MainWindow(this);
main.Show();
}
我想答案可能是創建一個窗口類的某種,但我不知道這是什麼會看起來像。
有兩個概念。在'wpf'(和'mvvm'一起)中,最好是在處理窗口的時候。只需保留所有需要恢復狀態的視圖模型:焦點,選擇,輸入/選擇值等。另一個概念是創建窗口一次,然後永遠不要處理它們(着名的'winforms''隱藏技巧),它應該仍然在wpf中工作。在啓動時創建Windows實例,永遠不會再創建實例(就像你做的那樣!),但是調用該實例的'Hide()'/'Show()'方法。 – Sinatr 2014-10-09 14:44:34