2014-11-04 73 views
1

我在WPF应用程序的窗口之间切换时遇到问题。 也就是说。 MainWindow有一个文本框,Window1有一个编辑这个文本框文本的按钮。仅在其中一个窗口之间进行切换

当我想中止版本,并关闭(this.hide)Window1那里打开一个默认文本框文本的MainWindow的新实例。如何避免这种情况?

主窗口:

Window1 window = new Window1(); 

Button_click 
{ 
window.Show(); 
this.Hide(); 
} 

窗口1:

MainWindow mw = new MainWindow(); 

Button_click 
{ 
mw.Show(); 
this.Hide(); 
} 

我也试图与:

Window1 window = null; 

Button_click 
    { 
     if(window == null) 
     { 
     window = new Window1(); 
     window.Show(); 
     } 
     else 
     window.Visibility = Visibility.Visible; 

    this.Visibility = Visibility.Hidden; 
} 

而且在窗口1的代码相似,但它似乎没有工作过。

我读过所有类似问题的主题,但这些解决方案不适合我。

+0

*不工作*过于模糊。你发布的代码是无效的C#。 – 2014-11-04 22:37:47

+1

不要在Window1中创建一个MainWindow的新实例。请传递参考。 – MikeG 2014-11-04 22:38:37

回答

1

主窗口:

private void ButtonBase_OnClick(object sender, RoutedEventArgs e) 
    { 
     var window1 = new Window1(this); 
     window1.Show(); 
     Hide(); 
    } 

窗口1:

private MainWindow _mainWindow; 

    public Window1(MainWindow refMainWindow) 
    { 
     InitializeComponent(); 
     _mainWindow = refMainWindow; 
    } 

    private void ButtonBase_OnClick(object sender, RoutedEventArgs e) 
    { 
     _mainWindow.TextBox1.Text = "Hi From Window 1"; 
     _mainWindow.Show(); 
     Hide(); 
    } 
+0

可悲的是我不明白它是如何工作的(也许有一天...),但它完美的作品。这就是我的预期。谢谢:) 编辑:另一个问题,我可以做类同样的事情(而不是创建新的实例eveytime)? – wjtk4444 2014-11-05 12:03:20