【发布时间】:2018-09-11 00:14:20
【问题描述】:
我有这个 tabitem(默认样式)模板,其中标签项的背景设置为固定颜色。
<Style x:Key="tbitem" TargetType="{x:Type TabItem}">
<Setter Property="Focusable" Value="True"/>
<Setter Property="KeyboardNavigation.TabNavigation" Value="Continue"/>
<Setter Property="KeyboardNavigation.DirectionalNavigation" Value="Continue"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<Border Name="Border" BorderBrush="Transparent" BorderThickness="0" CornerRadius="0" Margin="0" Background="Transparent" >
<DockPanel>
<Label x:Name="TabLabel" DockPanel.Dock="Left" Foreground="White" FontWeight="ExtraBold" FontFamily="Segoe UI" FontSize="14" >
<ContentPresenter HorizontalAlignment="Stretch" VerticalAlignment="Stretch" x:Name="ContentSite" RecognizesAccessKey="True" ContentSource="Header" />
</Label>
<Button Name="PART_BTNCLOSE" DockPanel.Dock="Right" Style="{StaticResource CloseButtonStyle}" Command="USD:ActionCommands.CloseSessionTab"/>
</DockPanel>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Panel.ZIndex" Value="100"/>
<Setter TargetName="Border" Property="BorderBrush" Value="Green"/>
<Setter TargetName="Border" Property="Background" Value="Green"/>
<Setter TargetName="Border" Property="Margin" Value="2,0,0,0"/>
<Setter TargetName="PART_BTNCLOSE" Property="Visibility" Value="{Binding CloseButtonVisibility}"/>
<Setter Property="KeyboardNavigation.TabNavigation" Value="Continue"/>
<Setter Property="KeyboardNavigation.DirectionalNavigation" Value="Continue"/>
</Trigger>
<Trigger Property="IsSelected" Value="False">
<Setter TargetName="TabLabel" Property="Foreground" Value="#666666"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我实际的 tabitem 包含一个文本块来显示选项卡标题
<TabItem Style="{StaticResource SessionTabs}" >
<TabItem.Header>
<TextBlock Text="Tab 1" >
</TextBlock>
</TabItem.Header>
</TabItem>
到目前为止一切正常。问题是.. 但是有时我必须根据某些条件更改我的标签颜色之一,如果我对我的文本块进行更改,那么外观和感觉就很奇怪。
有什么方法可以设置我父母的边框背景以匹配我的文本块的背景?或者以某种方式从孩子那里触发/更新祖先的背景?
【问题讨论】:
-
对不起.. 不要在意样式名称的差异.. tbItems 和 sessiontabs 是相同的。
-
您的
TextBlock是静态的还是您正在从代码隐藏中更改背景?如果您要从后面的代码和TextBlock一起更改,您也可以更新TabItem背景。最好的方法是使用TwoWay绑定将两个控件的背景绑定到某个属性。 -
好吧...不幸的是,由于一些不可避免的情况,我无法使用代码后面...是否有任何选项可用,没有代码后面?