【问题标题】:Change default highlight colour of TabItem in TabControl WPF在 TabControl WPF 中更改 TabItem 的默认突出显示颜色
【发布时间】:2010-10-08 19:06:25
【问题描述】:

我正在尝试更改 WPF 中选项卡控件中选项卡项的默认突出显示颜色。

图中高亮颜色为橙色,我只想知道是否可以将其更改为另一种纯色?

这是我的 XAML,它声明了 TabControl 和 2 个 TabItems

<TabControl>
            <TabControl.Background>
                <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
                    <GradientStop Color="#FFCCCCD0"/>
                    <GradientStop Color="#FF526593" Offset="1"/>
                </LinearGradientBrush>
            </TabControl.Background>
            <TabItem Header="test1">
                <TabItem.Content>
                    <StackPanel Orientation="Horizontal">
                        <Button Content="Test" VerticalAlignment="Center" />
                        <Button Content="Test2" />
                    </StackPanel>
                </TabItem.Content>              
            </TabItem>
            <TabItem Header="Test2">
                <TabItem.Content>
                    <TextBox />
                </TabItem.Content>
            </TabItem>
        </TabControl>

请注意,我无法使用表达式混合,因此任何解决方案都需要在 Visual Studio 2010 中实现。

谢谢。

【问题讨论】:

    标签: c# .net wpf xaml tabcontrol


    【解决方案1】:

    您需要覆盖 TabItem 控件的样式。 下面是一个仍然需要一些调整的例子。只需将其更改为您想要的样式即可。 IsSelected 触发器会在 TabItem 被选中时对其进行更改。

    <Window.Resources>
        <ResourceDictionary>
            <Style TargetType="{x:Type TabItem}">
                <Setter Property="BorderThickness"
                        Value="3" />
                <Setter Property="BorderBrush"
                        Value="Blue" />
                <Setter Property="VerticalContentAlignment"
                        Value="Center" />
                <Setter Property="HorizontalContentAlignment"
                        Value="Center" />
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type TabItem}">
                            <Border>
                                <Grid>
                                    <Grid>
                                        <Border x:Name="border" 
                                                CornerRadius="3,3,0,0"
                                                Background="{TemplateBinding Background}"
                                                BorderBrush="{TemplateBinding BorderBrush}"
                                                BorderThickness="1,1,1,0" />
                                    </Grid>
                                    <Border BorderThickness="{TemplateBinding BorderThickness}"
                                            Padding="{TemplateBinding Padding}">
                                        <ContentPresenter ContentSource="Header"
                                                          HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                                          VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
                                    </Border>
                                </Grid>
                            </Border>
                            <ControlTemplate.Triggers>
                                <Trigger Property="IsSelected"
                                         Value="True">
                                    <Setter TargetName="border"
                                            Property="BorderBrush"
                                            Value="Red" />
                                    <Setter TargetName="border"
                                            Property="BorderThickness"
                                            Value="0,3,0,0" />
                                </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </ResourceDictionary>
    </Window.Resources>
    
    <Grid>
        <TabControl>
            <TabControl.Background>
                <LinearGradientBrush EndPoint="0,1"
                                     StartPoint="0,0">
                    <GradientStop Color="#FFCCCCD0" />
                    <GradientStop Color="#FF526593"
                                  Offset="1" />
                </LinearGradientBrush>
            </TabControl.Background>
            <TabItem Header="test1">
                <TabItem.Content>
                    <StackPanel Orientation="Horizontal">
                        <Button Content="Test"
                                VerticalAlignment="Center" />
                        <Button Content="Test2" />
                    </StackPanel>
                </TabItem.Content>
            </TabItem>
            <TabItem Header="Test2">
                <TabItem.Content>
                    <TextBox />
                </TabItem.Content>
            </TabItem>
        </TabControl>
    </Grid>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-10
      • 2012-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多