1
我试图做一些事情,我会觉得这是非常简单的选择背景颜色,但谈到了将相当复杂。 我与已经在包括装配风格的一个主题一个TabControl的工作,但我想要的TabItem的背景色当TabItem的选择是不同的。虽然我可以在其他程序集中的主题上进行更改,但我宁愿将其覆盖以用于我的应用程序。erriding为主题的TabItem
这个问题似乎是设置背景颜色选择的TabItems涉及设置控制模板,特别是对IsSelected属性控件模板触发。我无法找到一个简单的方法,只覆盖一个触发没有完全定义的控件模板像这样(得到了一堆不必要的复制/粘贴代码)。这就是我现在所拥有的 - 是否有办法削减这种情况,只针对我关心的部分?它看起来不像ControlTemplates是可继承的。谢谢你尽你所能的帮助。
<Style TargetType="TabItem" BasedOn="{StaticResource {x:Type TabItem}}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<Grid>
<Border Name="Border"
Margin="0,0,-4,0"
Background="{DynamicResource {x:Static themes:HarmonyBrushes.BrushDKey}}"
BorderBrush="{DynamicResource {x:Static themes:HarmonyBrushes.BrushDKey}}"
BorderThickness="1,1,1,1"
CornerRadius="3,3,0,0">
<ContentPresenter x:Name="ContentSite"
VerticalAlignment="Center"
HorizontalAlignment="Center"
ContentSource="Header"
Margin="12,2,12,2"
RecognizesAccessKey="True" />
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Panel.ZIndex" Value="100" />
<Setter TargetName="Border"
Property="Background"
Value="{DynamicResource {x:Static themes:HarmonyBrushes.BrushLightKey}}" />
<Setter TargetName="Border"
Property="BorderBrush"
Value="{DynamicResource {x:Static themes:HarmonyBrushes.BrushLightKey}}" />
<Setter Property="Foreground"
Value="{DynamicResource {x:Static themes:HarmonyBrushes.TextBrushLightKey}}" />
<Setter TargetName="Border"
Property="BorderThickness"
Value="1,1,1,0" />
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="Border"
Property="Background"
Value="{DynamicResource {x:Static themes:HarmonyBrushes.BrushDarkKey}}" />
<Setter TargetName="Border"
Property="BorderBrush"
Value="{DynamicResource {x:Static themes:HarmonyBrushes.BrushDarkKey}}" />
<Setter Property="Foreground"
Value="{DynamicResource {x:Static themes:HarmonyBrushes.BrushKey}}" />
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground"
Value="{DynamicResource {x:Static themes:HarmonyBrushes.TextBrushLightKey}}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我想过做但─问题是,我使用的主题,在所有重用他们的画笔所以即使我只在本地对每个tabitem进行更改,它最有可能改变的不仅仅是所选标签的颜色。 – dbromberg 2012-02-21 22:29:13