Как создать WPF TabControl с несколькими заголовками для каждого элемента TabItem? - PullRequest
0 голосов
/ 06 октября 2011

Описание:

В настоящее время я нахожусь в процессе создания приложения WPF, в котором основной контент должен быть представлен в TabControl.

TabControl существует из:

  • TabItem, который содержит внешний элемент управления, имеющий несколько представлений, при этом каждое представление должно быть видимым как заголовок на TabControl;
  • Несколько TabItems с собственным контентом, каждый со своим заголовком.

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

Вопросы:

  • Какой элемент управления лучше использовать для такого сценария?
  • Если вы используете TabControl, какие изменения следует внести?

Заранее спасибо.

Обновление # 1

В ответ на vortex прототип такого элемента управления (как вы можете видеть, внешний элемент управления - это Microsoft Office InfoPath FormControl):

   <TabControl x:Name="FormViewsTabControl">
      <TabItem>
         <TabItem.Headers>
            <TabItemHeader Text="View A" />
            <TabItemHeader Text="View B" />
         </TabItem.Headers>
         <TabItem.Content>
            <winforms:WindowsFormsHost x:Name="InfoPathFormsHost">
               <infopath:FormControl x:Name="InfoPathFormControl" />
            </winforms:WindowsFormsHost>
         </TabItem.Content>
      </TabItem>
      <TabItem Header="Letter">
         <local:CustomView />
      </TabItem>
   </TabControl>

Ответы [ 3 ]

1 голос
/ 06 октября 2011

Если я правильно понимаю, вы хотели бы изменить заголовок TabItems в зависимости от того, какое представление вы выбираете во внешнем элементе управления.Если это так, то вам следует попытаться расширить свой внешний элемент управления с помощью свойства, которое содержит фактическое значение заголовка, а затем связать его с заголовком TabItmes.

0 голосов
/ 17 октября 2013

Мы использовали следующую ссылку

[http://zamjad.wordpress.com/2011/09/21/using-contenttemplateselector/]

когда мы столкнулись с этим типом проблемы

0 голосов
/ 06 октября 2011

Вы можете иметь его так, чтобы TabItem.Header содержал элемент Panel, который может содержать несколько дочерних элементов.Пример:

<TabItem>
  <TabItem.Header>
    <StackPanel>
      <TextBlock Text="View A" />
      <TextBlock Text="View B" />
    </StackPanel>
  </TabItem.Header>
  <TabItem.Content>
    <winforms:WindowsFormsHost x:Name="InfoPathFormsHost">
      <infopath:FormControl x:Name="InfoPathFormControl" />
    </winforms:WindowsFormsHost>
  </TabItem.Content>
</TabItem>
...