2013-07-03 243 views
0

我目前正在构建一个简单的GUI程序,我碰到了希望快速修复选项卡控件自定义的问题。我的选项卡当前处于活动状态时设置为“浅蓝色天空”。我有两个标签框,其中一个我想更改为Blue Violet。当我为要改变的标签区域输入颜色代码时,什么都不会发生。XAML WPF:选项卡控件

代码注意:我正在尝试更改文件,选项和帮助选项卡。您将能够在我的代码中看到我试图将背景设置为“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> 

谢谢!

+0

但是当你想看BlueViolet?如果TabItem.IsSelected为True,则将Background设置为LightSkyBlue,如果它为False,则将Background设置为LightGray。没有机会拿出BlueViolet。 – LPL

回答

2

使用TemplateBindingControl获取ControlTemplate的本地值。

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

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

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

如果你想不同的颜色只为IsSelected是真的还是假的使用TemplateBindingControlTemplate.Triggers

+0

创建此模板绑定可能“最不复杂”,然后删除“错误”IsSelected触发器,以便在未选中选项卡项目时将TabItem默认为背景颜色。 –

+0

我是新来的这种语言,请耐心等待。它说'背景=“LightBlue”'我将它改为'Background =“{TemplateBinding Background}”'。我在哪里更改''?看起来我有两个标签,但它们受到一种风格的控制。 –

+0

您有一个TabItem样式,其中包含用于所有TabItem的模板。目前,您的背景只能在ControlTemplate.Triggers中设置。所有其他背景设置都将被忽略。现在,它取决于您想要查看BlueViolet的时间和地点。如果我不知道你想要什么,我不能说你必须做什么。 – LPL

相关问题