2015-10-17 1 views
0

У меня есть 2 файла xaml L1.xaml и L2.xaml Сначала откроется L1. Он имеет кнопку, которая при нажатии открывается L2. Но я хочу, чтобы L2 открывался в том же окне, что и L1.Как переключиться на другой файл xaml в том же окне?

Более точно, когда кнопка нажата, L1 должен заканчиваться, и L2 должен начинаться без исчезновения основного окна даже на секунду.

+0

Что это за файлы xaml? они 'Windows'? 'Pages'? 'UserControls'? –

+0

windows are are –

ответ

0

Что вам нужно сделать, это создать навигационную страницу, а затем изменить L1 и L2 на страницы. Это позволит вам поменять местами страницы во время выполнения и использовать событие для назначения страницы. Пожалуйста, обратитесь к этой странице переполнения стека для разных способов реализации Window vs Page vs UserControl for WPF navigation?

0

Существует много способов сделать это. 1.- Вы можете создать страницу навигации и свои L1.xaml и L2.xaml, они должны быть страницами. Вот хорошая статья, показывающая это. http://paulstovell.com/blog/wpf-navigation

2.- Вы можете добавить в ваш MainPage управление кадров, с этим элементом управления вы можете перемещаться между страницами (опять же ваш L1 и L2 должны быть Pages. (Это почти такой же первой точки, но разница, которую вы может использовать элемент управления Frame внутри другого элемента управления, например UserControl.

3.- Вы можете использовать ContentControl или ContentPresenter в качестве вашего контейнера. Эти элементы управления имеют свойство Content, когда пользователь нажимает кнопку, чтобы показать L1 или L2 xaml (doesn ' неважно, являются ли они UserControl или Page) вам просто нужно создать новый экземпляр вашего представления, например: MyContentControl.Content = new MyView1();

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

С наилучшими пожеланиями!

+0

Благодарим вас за объяснение , но я не могу сделать это как страницу .... так как есть много событий Key Down и фокус установлен на Window. В UserControl idk почему, но события Key Down не работали. В случае страницы, Это игра, поэтому я не хочу, чтобы окно браузера со спиной n вперед открывалось. –

+0

, вы должны использовать третий вариант, который я объяснил. В вашем окне просто установите элемент управления содержимым, и вам нужно будет изменить представления, задающие свойство Content, с новым экземпляром ваших пользовательских элементов управления, если вы хотите перейти от L1 к L2, а кнопка находится внутри L1, вы можете получить доступ к родительскому элементу вашего UserControl (это должен быть ContentControl) и изменить свойство Content с помощью вашего нового View: Example. var parent = L1.Parent как ContentControl; parent.Content = new myNewView(); – RicardoPons

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