2014-11-04 3 views
1

У меня проблема с переключением между окнами в приложении WPF. Т.е. MainWindow имеет одно текстовое поле, а в Window1 есть кнопка, которая редактирует текст текстового поля.Переключение между окнами только с одним их экземпляром

Когда я хочу прервать выпуск, и я закрываю (this.hide) Window1 открывает новый экземпляр MainWindow с текстовым текстом по умолчанию. Как этого избежать?

MainWindow:

Window1 window = new Window1(); 

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

Window1:

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

И похоже в Window1 коде, но это, кажется, не работает тоже.

Я прочитал все темы с похожим вопросом, но эти решения не работают для меня.

+0

* не работает * слишком расплывчатым. И код, который вы опубликовали, недействителен C#. –

+1

Не создавайте новый экземпляр MainWindow в Window1. Передайте ссылку вместо этого. – MikeG

ответ

1

MainWindow:

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

Window1:

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

Смежные вопросы