Как изменить шрифт заголовка TabItem без изменения шрифта содержимого с помощью шаблона управления - PullRequest
0 голосов
/ 27 октября 2019

Точно такой же вопрос, как и Как изменить шрифт заголовка TabItem без изменения шрифта содержимого? , но я использую шаблон управления с Content Presenter.

Когда я переключаюсь на вкладку, все содержимое на этой вкладке меняет свой шрифт, и я хотел бы ограничить это только элементом вкладки. Я также открыт к лучшим решениям о том, как анимировать элементы вкладок, если это потребует чрезмерной выборки.

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    >

    <Style TargetType="TabControl">
        <Setter Property="TabStripPlacement" Value="Left"/>
        <Setter Property="Background" Value="{StaticResource NeutralBrush35}"/>
    </Style>

    <Style TargetType="TabPanel">
        <Setter Property="Margin" Value="0"/>
    </Style>

    <Style TargetType="TabItem">
        <Setter Property="Height" Value="25"/>
        <Setter Property="Width" Value="140"/>
        <Setter Property="Opacity" Value="0.85"/>
        <Setter Property="FontSize" Value="12"/>
        <Setter Property="FontFamily" Value="Futura Md BT"/>
        <Setter Property="Foreground" Value="White"/>
        <Setter Property="Background" Value="{StaticResource LivingGreenLight}" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="TabItem">

                    <Grid Name="Panel" Margin="0,-2,0,0">

                        <ContentPresenter 
                            VerticalAlignment="Center"
                            HorizontalAlignment="Center"
                            ContentSource="Header"
                            Margin="0"
                            />
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsSelected" Value="True">
                            <Setter 
                                TargetName="Panel" 
                                Property="Background" 
                                Value="{StaticResource LivingGreenDark}" 
                                />

                            <Setter 
                                TargetName="Panel"
                                Property="Opacity"
                                Value="1"
                                />
                            <Setter
                                Property="FontWeight"
                                Value="Bold"
                                />
                        </Trigger>
                        <Trigger Property="IsSelected" Value="False">
                            <Setter 
                                TargetName="Panel" 
                                Property="Background" 
                                Value="{StaticResource LivingGreenNormal}" 
                                />
                            <Setter 
                                TargetName="Panel"
                                Property="Opacity"
                                Value="0.90"
                                />
                            <Setter
                                Property="FontWeight"
                                Value="Normal"
                                />
                        </Trigger>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="IsMouseOver" Value="True"/>
                                <Condition Property="IsSelected" Value="False"/>
                            </MultiTrigger.Conditions>
                            <MultiTrigger.EnterActions>
                                <BeginStoryboard>
                                    <Storyboard>
                                        <DoubleAnimation 
                                            Storyboard.TargetProperty="Opacity"
                                            To="1"
                                            Duration="0:0:0.3"
                                        />
                                        <DoubleAnimation 
                                            Storyboard.TargetProperty="FontSize"
                                            To="14" 
                                            Duration="0:0:0.3"
                                        />
                                    </Storyboard>
                                </BeginStoryboard>
                            </MultiTrigger.EnterActions>
                            <MultiTrigger.ExitActions>
                                <BeginStoryboard>
                                    <Storyboard>
                                        <DoubleAnimation 
                                     Storyboard.TargetProperty="Opacity"
                                     To=".85"
                                     Duration="0:0:0.3"/>
                                        <DoubleAnimation 
                                     Storyboard.TargetProperty="FontSize"
                                     To="12"
                                     Duration="0:0:0.3"/>
                                    </Storyboard>
                                </BeginStoryboard>
                            </MultiTrigger.ExitActions>
                        </MultiTrigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

</ResourceDictionary>
...