0

Есть две формы. Необходимо открыть вторую, как бы внутри первой. На том же месте, не как модальное окно. По примерной аналогии с игрой: вы нажимаете кнопку "новая игра", меню должно скрыться и появится сама игра.

Пробовал код ниже, но окно открывается не на том же месте и следовательно выглядит как дичь.

this.Hide();
fg.ShowDialog();
this.Show();
Ev_Hyper
  • 1,684
raspberry
  • 557
  • Это называется не окно, а страница/вкладка/контрол. Окно в приложение это то, где есть крест закрытия (если грубо сказать..).. – EvgeniyZ Nov 20 '17 at 19:25
  • Вам правильно подсказывают по поводу вкладок. Я предложу вам пару ссылок: TabControl в WPF и Класс TabControl и Создание вкладок и TabControl – Denis Bubnov Nov 20 '17 at 19:36
  • ищите на тему страничная навигация –  Nov 20 '17 at 20:45
  • https://ru.stackoverflow.com/questions/634115/Как-в-wpf-менять-содержимое-окна/634211 –  Nov 20 '17 at 20:47
  • https://ru.stackoverflow.com/questions/457703/wpf-mvvm-vs-Постраничная-навигация –  Nov 20 '17 at 20:47
  • https://ru.stackoverflow.com/questions/644129/wpf-mvvm-Замена-одного-представления-на-другое –  Nov 20 '17 at 20:47
  • https://ru.stackoverflow.com/questions/644580/Переключение-страниц-в-wpf-по-архитектуре-mvvm –  Nov 20 '17 at 20:48

1 Answers1

0

В вашем случае будет правильно сделать наоборот: вызывать окно "Новая игра" из окна самой игры.

NewGameWindow form = new NewGameWindow();
form.Owner = this;
form.WindowStartupLocation = CenterOwner;
form.ShowDialog();

При этом можете скрывать, а можете не скрывать. Этот пример лучше подходит для небольших игрушек типа стандартного Сапера.

Если хочется, как в обычных играх: в одном окне - всё. То вместо фреймов проще использовать ContentControl. Просто присваиваете свойству Content нужный вам UserControl и у вас в том же окне поменяться содержимое.

Иван
  • 1,109