2012-05-16 3 views
0

Я хотел бы реализовать элемент управления TabManager, который может быть создан как сетка в XAML. Это похоже на довольно общую задачу, но я не мог найти учебник, и я все еще не хочу изобретать колесо, поэтому мне было интересно, есть ли у кого-нибудь пример.Grid-like WPF control

Я хочу, чтобы XAML для создания элемента управления, чтобы выглядеть примерно так:

<TabManager> 
     <TabManager.TabDefinitions> 
      <TabDefinition Caption="Tab 1"/> 
      <TabDefinition Caption="Tab 2"/> 
      <TabDefinition Caption="Tab 3"/> 
     </TabManager.TabDefinitions> 

     <TabPanel TabManager.Tab="0"> 
      <TextBlock Text="foo"/> 
     </TabPanel> 
     <TabPanel TabManager.Tab="1"> 
      <TextBlock Text="bar"/> 
     </TabPanel> 
     <TabPanel TabManager.Tab="2"> 
      <TextBlock Text="baz"/> 
     </TabPanel> 
    </TabManager> 

TabManager будет оказывать несколько кнопок и некоторые элементы содержат детей в TabPanels' - например, поместите их в DockPanel или что-нибудь еще, что я предпочитаю делать; не имеет значения.

+0

Вы хотите создать пользовательский элемент управления? [link] Пользовательский контроль WPF http://www.codeproject.com/Articles/32825/How-to-Creating-a-WPF-User-Control-using-it-in-aW – Habib

+0

Я, скорее всего, получаю Панель, как и сетка. Основной вопрос моего вопроса заключается в том, как поддерживать несколько дочерних элементов в классе TabManager. – Zak

+0

Итак, в основном вы хотите, чтобы TabManager показывал вкладки, как грид-макет? Но вы хотите только горизонтальную линию вверху, чтобы она выглядела как Tabs ?? Но TabControl уже имеет аналогичную функциональность. – ArchAngel

ответ

2

Вы попробовали <TabControl>?

Например -

<TabControl> 
     <TabItem Header="Tab1" x:Name="Tab1"> 
      <Grid> 
       <TextBlock Text="foo"/> 
      </Grid> 
     </TabItem> 
     <TabItem Header="Tab2" x:Name="Tab2"> 
      <Grid> 
       <TextBlock Text="bar"/> 
      </Grid> 
     </TabItem> 
     <TabItem Header="Tab3" x:Name="Tab3"> 
      <Grid> 
       <TextBlock Text="baz"/> 
      </Grid> 
     </TabItem> 
    </TabControl>