【问题标题】:WPF: Setting Foreground of a Label inside a TabItem Header using stylesWPF:使用样式在 TabItem 标头内设置标签的前景
【发布时间】:2011-04-18 20:37:05
【问题描述】:

我有一个 TabControl,它看起来像这样:

<TabControl>
  <TabItem>
    <TabItem.Header>
      <StackPanel Orientation="Horizontal"> 
        <Canvas ... />
        <Label>Tab Number 1</Label>
      </StackPanel>
    </TabItem.Header>
  </TabItem>
 <TabItem>
    <TabItem.Header>
      <StackPanel Orientation="Horizontal">    
        <Canvas ... />
        <Label>Tab Number 2</Label>
      </StackPanel>
    </TabItem.Header>
  </TabItem>
</TabControl>

好的,我喜欢在选择项目时使用不同的文本颜色。为此我创建了一个样式:

<Style TargetType="{x:Type TabItem}">
      <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type TabItem}">
                    <Grid Height="60">
                        <Border x:Name="Border" BorderBrush="#FFC6C7C8"
                             BorderThickness="1,0,1,0" Margin="-1,0,0,0">
                        </Border>
                        <Border x:Name="BorderOverlay" BorderBrush="Transparent"
                             BorderThickness="1,0,1,0" Margin="-1,0,0,0">
                            <ContentPresenter x:Name="ContentSite"
                               VerticalAlignment="Center"
                               HorizontalAlignment="Center"
                               ContentSource="Header"
                               Margin="15,6,15,6">
                            </ContentPresenter>    
                        </Border>   
                  </Grid>
                  <ControlTemplate.Triggers>
                     <Trigger Property="IsSelected" Value="True">
                         <!-- What goes here? -->
                     </Trigger>
                  <ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
      </Setter>
</Style>

我尝试设置 Label.Foreground,但它似乎不起作用。我也用 TextBlock 试了一下,效果不好。

我觉得这个问题和我的差不多,但是问题最后还是没有解决: Setting TabItem foreground color also sets the TabControl foreground color

感谢您的帮助。

【问题讨论】:

    标签: wpf label styles textblock tabitem


    【解决方案1】:

    尝试使用 Style Triggers 而不是 Control Template Triggers

    将此添加到您当前的样式中:

            <Style.Triggers>
                <Trigger Property="IsSelected" Value="True">
                    <Setter Property="Foreground" Value="Green" />
                </Trigger>
                <Trigger Property="IsSelected" Value="False">
                    <Setter Property="Foreground" Value="Red" />
                </Trigger>
            </Style.Triggers>
    

    这是其他所有人的通用样式。

                <Style TargetType="{x:Type TabItem}">
                    <Style.Triggers>
                        <Trigger Property="IsSelected" Value="True">
                            <Setter Property="Foreground" Value="Green" />
                        </Trigger>
                        <Trigger Property="IsSelected" Value="False">
                            <Setter Property="Foreground" Value="Red" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
    

    【讨论】:

      猜你喜欢
      • 2010-12-03
      • 1970-01-01
      • 1970-01-01
      • 2014-03-07
      • 2021-09-16
      • 2016-04-22
      • 2021-09-11
      • 2013-12-10
      • 2012-11-13
      相关资源
      最近更新 更多