Я все еще на стадии изучения c #, поэтому не стреляйте в меня, если вы считаете это глупым вопросом; -)
В проекте у меня есть главное окно и новое окно с именем "window1"
На главном я делаю кнопку, которая пойдет в окно1 вот так:
private void Button_Click(object sender, RoutedEventArgs e)
{
Window1 W1 = new Window1();
W1.Show();
this.Close();
}
Теперь это работает, как и ожидалось, создает новый экземпляр window1 и показывает его при закрытии главного окна.
Но здесь есть одна загвоздка: в window1 некоторые вещи могут измениться, например, кнопка, которую нажимает пользователь, и затем эта кнопка скрывается, пока отображается новая.
Также я сделал кнопку «Назад» в window1, которая использует тот же код, что и выше, чтобы вернуться в главное окно (теперь новое окно1, но новое главное окно)
Но в этот момент, когда я снова нажимаю кнопку main, чтобы перейти к окну1, это окно1 возвращается в состояние по умолчанию. Мне кажется логичным, потому что он создает новый экземпляр при использовании кнопки.
Но как мне это сделать, если я хочу снова открыть тот первый экземпляр window1, который уже был изменен пользователем?
Сначала я подумал о размещении Window1 W1 = new Window1();
вне метода кнопки, но это также не сработает из-за этой кнопки «назад».
Надеюсь, я достаточно хорошо объяснил, что я пытаюсь сделать.
Есть мысли по этому поводу?
=====================
РЕДАКТИРОВАТЬ 1:
используя пример кода из "chrfin"
некоторые ошибки genarate частей, такие как "visible = true" часть
Может быть, это потому, что я использую Express 2010 или потому, что я использую WPF, а не формы?
в основном:
Window1 W1 = null; // Initialise Field.
private void CalcTabel_Click(object sender, RoutedEventArgs e)
{
if (W1 == null)
{
W1 = new Window1();
W1.MainWindow = this; //ERROR
W1.Show();
}
else
W1.Visibility = Visibility.Visible;
this.Visibility = Visibility.Hidden;
}
в окне1
public MainWindow w1 { get; set; }
private void Quit_Click(object sender, RoutedEventArgs e)
{
w1.Visibility = Visibility.Visible;
this.Visibility = Visibility.Hidden;
}
теперь ошибка, которую я получаю в основной части:
«WpfApplication1.Window1» не содержит определения для «MainWindow», принимающего первый аргумент типа «WpfApplication1.Window1» (вы пропустили директиву using или ссылку на сборку?)
просто удаление этой строки ошибки приведет к тому, что get, set part ничего не получит.
есть идеи?
=====================
РЕДАКТИРОВАТЬ 1:
Спасибо еще раз "chrfin"
получил это работает сейчас:)
в основном:
Window1 W1 = null; // Initialise Field.
private void CalcTabel_Click(object sender, RoutedEventArgs e)
{
if (W1 == null)
{
W1 = new Window1();
W1.Hoofdmenu = this;
W1.Show();
}
else
W1.Visibility = Visibility.Visible;
this.Visibility = Visibility.Hidden;
}
в Window1:
public MainWindow Hoofdmenu { get; set; }
private void Quit_Click(object sender, RoutedEventArgs e)
{
Hoofdmenu.Visibility = Visibility.Visible;
this.Visibility = Visibility.Hidden;
}