【发布时间】:2014-11-08 17:55:43
【问题描述】:
我有一个 TabControl,其样式可以更改 TabItem 标题的 FontSize。当我数据绑定 ItemsSource 时,只有标题受 FontSize 影响。但是,当我在另一个 TabControl 上使用相同的样式并在 XAML 中添加 TabItems 时,TabItem 中的所有内容都会更改 FontSize。我希望该样式同时适用于数据绑定和非数据绑定的 TabItem。
<TabControl Style="{StaticResource VariablesTabControl}" ItemsSource="{Binding TabItems}">
...
</TabControl>
MainSkin.xaml:
<Style TargetType="TabControl" x:Key="VariablesTabControl">
<Setter Property="ItemContainerStyle" Value="{StaticResource VariableTabItem}" />
...
</Style>
<Style TargetType="TabItem" x:Key="VariableTabItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TabItem">
<Grid Name="Panel" MinHeight="30" MinWidth="120">
<ContentPresenter x:Name="ContentSite" VerticalAlignment="Center" HorizontalAlignment="Left" ContentSource="Header" Margin="10,2" />
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="False">
<Setter TargetName="Panel" Property="Background" Value="Transparent" />
<Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" />
<Setter Property="FontSize" Value="12" />
</Trigger>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="Panel" Property="Background" Value="{StaticResource BackgroundMouseOver}" />
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="Panel" Property="Background" Value="{StaticResource SelectedBrush}" />
<Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" />
<Setter Property="FontSize" Value="12" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
【问题讨论】:
-
<Setter Property="ItemContainerStyle" Value="{StaticResource VariableTabItem}" />谁是VariableTabItem,您的选项卡控件是否具有覆盖其模板的样式? -
对不起,已经更改了示例中的样式名称。现在它是我的代码中的内容。
-
好的,现在是第二个问题 - 您的选项卡控件是否具有覆盖
Template的样式,通常您在TabItem上设置的属性不会影响选项卡的内容,除非您自己更改此行为. -
我没有覆盖 TabControl 的 Template 属性。
标签: wpf header tabcontrol tabitem