WPF: можно ли использовать шаблон данных и шаблон управления? - PullRequest
0 голосов
/ 11 ноября 2010

В настоящее время я работаю над стилизацией TabControl, и у меня есть, возможно, странная идея:

Что если я хотел бы иметь ControlTemplate по умолчанию для всех моих вкладок в моем приложении, но указать другой DataTemplate длякаждый TabControl (в зависимости от данных, которые я хочу показать)?

Что вы думаете об этом?Знаете ли вы, если есть решение для этого?

Может быть, я иду не в ту сторону ...

Спасибо за ваши мысли: -)

Ответы [ 2 ]

1 голос
/ 11 ноября 2010

Вы не можете указать DataTemplate для TabControl, вы указываете DataTemplate для данных, которые отображаются в всех TabItems вашего TabControl.

0 голосов
/ 12 ноября 2010

Я нашел способ! Фактически, свойство ItemContainerStyle TabControl предоставляет три шаблона:

  1. HeaderTemplate, который является шаблоном данных для заголовка каждого элемента
  2. ContentTemplate, который представляет собой шаблон данных для содержимого каждого элемента
  3. Шаблон, который может быть шаблоном управления, и который я использую!

Вот как я это делаю (стиль):

<Style x:Key="MyTabItemStyle" TargetType="{x:Type TabItem}">
    <Setter Property="Template"  
            Value="{StaticResource ControlTemplate}"/>
    <Setter Property="Header" Value="{Binding}"/>
    <Setter Property="HeaderTemplate"  
            Value="{StaticResource HeaderTemplate}"/>
    <Setter Property="Content" Value="{Binding}"/>
    <Setter Property="ContentTemplate"  
            Value="{StaticResource ContentTemplate}"/>
</Style>

И чтобы связать его с TabControl:

<TabControl ItemsSource="{Binding Elements}" 
            SelectedIndex="{Binding SelectedIndex}"
            ItemContainerStyle="{DynamicResource MyTabItemStyle}">

Что вы думаете об этом?

...