Новое окно в TabItem? - PullRequest
       10

Новое окно в TabItem?

4 голосов
/ 18 декабря 2009

Можно ли открыть еще один Window в TabControl х TabItem?

Причина, по которой я хочу это сделать, заключается в том, что если у меня в TabControl есть 5 TabItem s, один файл Window, который я кодирую, для всех этих TabItem s и связанных с ними действий станет очень большим. Поэтому было бы неплохо, если бы можно было предоставить каждому TabItem свой Window файл.

Или как решить проблему, когда файл Window, управляющий TabControl, становится слишком большим?

Ответы [ 5 ]

8 голосов
/ 18 декабря 2009
<Window ...
     xmlns:local="clr-namespace:MyNamespace"
     >
     <TabControl>
          <TabItem Header="FirstTab">
               <local:MyFirstTabUserControl/>  
          </TabItem>
          <TabItem Header="SecondTab">
               <local:MySecondTabUserControl/>  
          </TabItem>
          <TabItem Header="ThirdTab">
               <local:MyThirdTabUserControl/>  
          </TabItem>
     </TabControl>
</Window>

Каждый ваш TabUserControl на самом деле является простым UserControl, поскольку TabItem может размещать любой элемент управления как свой собственный дочерний элемент.

4 голосов
/ 18 декабря 2009

У вас есть несколько вариантов:

  • добавьте один или несколько словарей ресурсов в свое приложение, которые содержат ресурсы с шаблонами и стилями для различных представлений, которые вы размещаете на своих вкладках. Этот подход хорошо работает, если вам просто нужно поддерживать разделение только визуальных деревьев.
  • создать пользовательские элементы управления для каждого представления (с собственным XAML и файлом класса) и использовать один экземпляр для каждого отдельного представления на вкладках. Этот подход позволяет вам инкапсулировать определенную бизнес-логику и соответствующее визуальное дерево вместе.
  • генерирует часть пользовательского интерфейса из кода. У этого нет никаких преимуществ, за исключением того, что т делает XAML меньше. И если ваши файлы .cs становятся слишком большими, вы всегда можете разделить их на несколько файлов кода и использовать частичные классы. (просто нужно было добавить это для полноты: -))
3 голосов
/ 26 октября 2013

Вы также можете установить содержимое TabItem равным содержимому вашего окна

Например: [WindowType - ваше окно]

WindowsType oWindow = new WindowType();
TabItem oTab = new TabItem();
oTab.Content = oWindow.Content;
2 голосов
/ 18 декабря 2009

Создайте UserControl для каждого TabItem.

0 голосов
/ 17 февраля 2013

Вы можете использовать UserControl, как уже упоминалось.

Но вы также можете использовать элемент управления Page. Каждое «Окно» будет страницей, а вкладка будет содержать элемент NavigationControl. Я использовал этот подход раньше, и он работает хорошо. Я предпочитаю маршрут UserControl, но оба действительны.

...