в WPF, возвращаясь обратно в MainWindow после установки содержимого в другом месте - PullRequest
0 голосов
/ 28 июля 2011

Понятия не имею, почему мне так сложно найти ответ.По сути, так же, как в форме окна, я создаю новый объект страницы, а затем отображаю его.

Однако вы не можете сделать это в WPF, поэтому вместо этого я устанавливаю содержимое главной страницы, чтобычто из созданного объекта.

Это все прекрасно работает, но когда я хочу закрыть недавно открытую страницу, я не могу.Я, очевидно, не могу сделать ничего подобного. Закрыть.И у меня нет ссылки на MainWindow, поэтому я не могу переустановить содержимое?

Пожалуйста, помогите, я ОЧЕНЬ растерялся!

Подробнее ...

ИзвинитеЭто не самый ясный вопрос.В моем главном окне у меня есть

Page1 mainMenu = new Page1();

this.Content = mainMenu;

Это открывает мою новую страницу, как новое окно, но без фактической загрузки нового окна, что на самом деле здорово!

Однако мой текущийстраница теперь имеет содержание Page1.Итак, он запускает код и отображает содержимое со страницы 1.

На первой странице, как мне вернуть содержимое обратно в MainWindow?Я перепробовал много вещей, которые все по существу получают ошибку -

«Глубина логического дерева превышена при обходе дерева. Это может указывать на цикл в дереве».

Ответы [ 4 ]

2 голосов
/ 28 июля 2011

"По сути, так же, как в форме окна, я создаю новый объект страницы, а затем отображаю его. Однако вы не можете сделать это в WPF, поэтому вместо этого ..." Это утверждение / вопрос расплывчато. Вы знаете, что можете открыть страницу в NavigationWindow?

    NavigationWindow win = new NavigationWindow();
    win.Content = new pageWFbchAdmin();
    win.Show();
1 голос
/ 28 июля 2011

Страница обычно используется в Frame или NavigationWindow.Там у вас есть возможность перемещаться между страницами.

Ваш код заменил содержимое окна, и в нем нет функции навигации.Что вы можете сделать, это открыть новое окно и закрыть текущее или установить другое содержимое для свойства Content вашего окна.

ИМО, вы смешиваете различные технологии пользовательского интерфейса.Если вы хотите создать браузерное приложение, посмотрите на класс NavigationWindow или Frame .В противном случае, вероятно, лучше использовать не объект Page, а UserControls.Может быть эта ссылка поможет вам.

0 голосов
/ 29 июля 2011

Страница может не иметь метода Close, но NavigationWindow имеет метод Close.Страница является контентом (не визуальным хостом).

0 голосов
/ 28 июля 2011

Возможно, я неправильно понял, что вы пытаетесь сделать, но мне интересно, действительно ли вы хотите, чтобы ваша страница была окном, а затем показывала его с помощью метода Window.ShowDialog.

Таким образом, он будет вести себя как модальный диалог, который звучит немного похоже на то, что вы описываете в начале вопроса.

В качестве альтернативы, вместо замены содержимого основного окна, вы можете попробовать поместить основное содержимое и содержимое страницы в MainWindow ... в отдельные панели друг над другом, а затем переключить видимость каждой панели на показать / скрыть необходимый контент.

...