使用相同的样式为每个选项卡设置不同的颜色



所以我在我的Window.Resources中有以下样式:

<Style TargetType="TabItem" x:Key="tiS">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="TabItem">
                    <Grid Height="40" Width="186">
                        <Border Name="tiBorder" Background="Transparent">
                            <ContentPresenter ContentSource="Header"
                                              VerticalAlignment="Center"
                                              HorizontalAlignment="Center"
                                              TextBlock.FontSize="20"/>
                        </Border>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsSelected" Value="True">
                            <Setter Property="Panel.ZIndex" Value="90"/>
                            <Setter TargetName="tiBorder" Property="Background" Value="{DynamicResource tiB}"/>
                            <!--<Setter TargetName="tiBorder" Property="Margin" Value="0,-4,0,-4"/>-->
                            <Setter TargetName="tiBorder" Property="BorderThickness" Value="0,0,0,1"/>
                            <Setter TargetName="tiBorder" Property="BorderBrush" Value="{StaticResource tiLineFade}"/>
                        </Trigger>
                        <Trigger Property="IsSelected" Value="False">
                            <Setter Property="Panel.ZIndex" Value="80"/>
                            <Setter TargetName="tiBorder" Property="BorderThickness" Value="0,0,0,1"/>
                            <Setter TargetName="tiBorder" Property="BorderBrush" Value="{StaticResource tiLineFade}"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

此样式用于 5 个 TabItems,每个选项卡项都有不同的颜色,由触发器中的"动态资源 tiB"给出。

在每个 TabItem 中,我放置了以下资源(Color1 在 Window.Resources 中设置):

<TabItem.Resources>
    <SolidColorBrush x:Key="tiB" Color="{StaticResource Color1}"/>
</TabItem.Resources>

我想知道,有没有更简单的方法可以做到这一点,或者我做得对吗?这是我第一次在 WPF 中使用样式,所以我想把它做好。(此代码有效!寻找一个更好的(如果有的话)解决方案来解决我的情况。

以下是完整的代码: http://pastebin.com/igwxgp6M

我相信这会起作用

<TabControl ...>
    <TabControl.ItemsContainerStyle>
       <Style TargetType="TabItem">
          //Put triggers here
       </Style>
    <TabControl.ItemsContainerStyle>
</TabControl>

相关内容

  • 没有找到相关文章

最新更新