【问题标题】:WPF - TabItem Background color changes when tabitem selected or hover overWPF - 当 tabitem 被选中或将鼠标悬停在上面时,TabItem 背景颜色会发生变化
【发布时间】:2010-07-16 13:12:19
【问题描述】:

我将 xaml 中 tabitem 的背景颜色设置为红色,但是当我运行它并将鼠标悬停在它上面或选择它时,它会变回默认的灰色外观。它仅在选择其他 tabitem 时正确显示。我如何让它一直保持红色。谢谢!

【问题讨论】:

    标签: wpf wpf-controls styles tabcontrol tabitem


    【解决方案1】:

    Here is example of TabItem ControlTemplate

    将其复制到您的资源中并在您需要的任何位置设置红色作为背景。

    示例

    <Window x:Class="TestCustomTab.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300">
        <Window.Resources>
            <SolidColorBrush x:Key="RedBrush" Color="Red"/>       
    
            <SolidColorBrush x:Key="SolidBorderBrush" Color="#888" />
    
            <SolidColorBrush x:Key="GreenBrush" Color="Green" />
    
            <SolidColorBrush x:Key="DisabledBackgroundBrush" Color="#EEE" />       
    
            <SolidColorBrush x:Key="DisabledBorderBrush" Color="#AAA" />        
    
            <SolidColorBrush x:Key="DisabledForegroundBrush" Color="#888" />
    
            <Style TargetType="{x:Type TabItem}">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type TabItem}">
                            <Grid>
                                <Border 
                                    Name="Border"
                                    Margin="0,0,-4,0" 
                                    Background="{StaticResource RedBrush}"
                                    BorderBrush="{StaticResource  SolidBorderBrush}" 
                                    BorderThickness="1,1,1,1" 
                                    CornerRadius="2,12,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="{StaticResource GreenBrush}" />
                                    <Setter TargetName="Border" Property="BorderThickness" Value="1,1,1,0" />
                                </Trigger>
                                <Trigger Property="IsEnabled" Value="False">
                                    <Setter TargetName="Border" Property="Background" Value="{StaticResource DisabledBackgroundBrush}" />
                                    <Setter TargetName="Border" Property="BorderBrush" Value="{StaticResource DisabledBorderBrush}" />
                                    <Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}" />
                                </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>        
        </Window.Resources>
        <Grid>
            <TabControl>
                <TabItem Header="MyTabItem" />
                <TabItem Header="MyTabItem"  />
            </TabControl>
        </Grid>
    </Window>
    

    创建测试 WPF 项目并粘贴示例代码而不是 Window1.xaml 代码。

    【讨论】:

    • +1... 如果可以的话,我会给你更多。这个例子教会了我很多关于 xaml 和模板的知识。
    猜你喜欢
    • 1970-01-01
    • 2023-01-17
    • 2022-01-21
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多