XAML WPF:选项卡控件

本文关键字:控件 选项 WPF XAML | 更新日期: 2023-09-27 18:21:02

我目前正在制作一个简单的GUI程序的原型,在这个程序中,我遇到了一个我希望能快速修复Tab控件自定义的问题。我的选项卡当前处于活动状态时设置为"淡天蓝色"。我有两个标签盒,其中一个我想换成蓝紫色。当我在要更改的选项卡区域中输入颜色代码时,不会发生任何事情。

代码注意:我正在尝试更改"文件"、"选项"answers"帮助"选项卡。您将能够在我的代码中看到,我试图将背景设置为"BlueViolet"。

如果你需要照片,请告诉我。

这是我的代码:

<!---Main Class-->
    <Window x:Class="Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="CartTools" Height="700" Width="1135" Name="Practice" FontSize="14" Opacity="1">
    <Window.Resources>
        <!---Tab items for Cart customization-->
        <Style TargetType="{x:Type TabItem}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type TabItem}">
                        <Grid>
                            <Border 
                  Name="Border"
                  Background="LightBlue"
                  BorderBrush="Black" 
                  BorderThickness="1,1,1,1" 
                  CornerRadius="30,6,0,0" >
                                <ContentPresenter x:Name="ContentSite"
                    VerticalAlignment="Center"
                    HorizontalAlignment="Center"
                    ContentSource="Header"
                    Margin="12,2,12,2"/>
                            </Border>
                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsSelected" Value="True">
                                <Setter TargetName="Border" Property="Background" Value="LightSkyBlue" />
                            </Trigger>
                            <Trigger Property="IsSelected" Value="False">
                                <Setter TargetName="Border" Property="Background" Value="LightGray" />
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources>
    <Grid Background="AliceBlue">
        <!---File, Options, Help tabs-->
        <TabControl HorizontalAlignment="Left" Name="TabControl1" Width="215" Margin="0,0,0,286">
            <TabItem Header="File" Name="TabItem1" Background="BlueViolet">
                <Grid>
                    <Label Height="28" Margin="6,6,79,0" Name="Label1" VerticalAlignment="Top">New</Label>
                    <Button Height="23" HorizontalAlignment="Left" Margin="6,40,0,0" Name="Button1" VerticalAlignment="Top" Width="75">Button</Button>
                </Grid>
            </TabItem>
            <TabItem Header="Options" Name="TabItem2" Background="BlueViolet">
                <Grid />
            </TabItem>
            <TabItem Header="Help" Name="TabItem3" Background="BlueViolet">
                <Grid />
            </TabItem>
        </TabControl>
        <!---Cart Management Tabs-->
        <TabControl Margin="251,0,12,12" Name="TabControl2">
            <TabItem Header="CartFunctions" Name="TabItem4">
                <Grid>
                    <RadioButton Height="16" Margin="6,6,0,0" Name="RadioButton1" VerticalAlignment="Top" HorizontalAlignment="Left" Width="120">RadioButton</RadioButton>
                    <RadioButton Height="16" HorizontalAlignment="Left" Margin="6,28,0,0" Name="RadioButton2" VerticalAlignment="Top" Width="120">RadioButton</RadioButton>
                    <CheckBox Height="16" HorizontalAlignment="Left" Margin="6,50,0,0" Name="CheckBox1" VerticalAlignment="Top" Width="120">CheckBox</CheckBox>
                </Grid>
            </TabItem>
            <TabItem Header="Cart Configuration" Name="TabItem5">
                <Grid />
            </TabItem>
            <TabItem Header="Cart I/O" Name="TabItem6">
                <Grid />
            </TabItem>
            <TabItem Header="CMS" Name="TabItem7">
                <Grid />
            </TabItem>
            <TabItem Header="Blocking Database" Name="TabItem8">
                <Grid></Grid>
            </TabItem>
        </TabControl>
    </Grid>
</Window>

谢谢!

XAML WPF:选项卡控件

使用TemplateBindingControlTemplate中的Control获取本地值。

<ControlTemplate TargetType="{x:Type TabItem}">
    <Border Background="{TemplateBinding Background}">
        ...
    </Border>
</ControlTemplate>

然后你会看到两个不同的背景

<TabControl>
    <TabItem Background="LightSkyBlue" />
    <TabItem Background="BlueViolet" />
</TabControl>

如果只对IsSelected使用不同的颜色,则在ControlTemplate.Triggers中使用TemplateBinding