我有一个默认的GroupBox样式,我想在其中将默认 Headers 字体颜色设置为蓝色 . 从样式中的ControlTemplate中设置时,我似乎无法应用颜色 . 因为它只是使用ContentPresenter作为 Headers 并且没有Foreground属性,所以我在ContentPresenter上设置TextElement.Foreground(我也尝试过TextBlock.Foreground),据我所知它应该使所有的TextBlock子元素ContentPresenter的前景为蓝色 . 但设置此项无效 .

我还尝试向ContentPresenter添加一个资源来覆盖TextBlock的默认样式,使其呈现蓝色前景,这也没有帮助 . 如果我在GroupBox本身上设置Foreground属性,则包含 Headers 和GroupBox内容的每个TextBlock都会将其颜色设置为该颜色,但我只想更改 Headers 的颜色 . 我不想给 Headers 一个明确的HeaderTemplate,因为我希望用户能够在 Headers 中放置他们想要的任何内容,我只希望该内容具有蓝色前景 .

<Style TargetType="{x:Type GroupBox}">
    <Setter Property="BorderBrush" Value="{DynamicResource TabItem.Selected.BorderBrush}"/>
    <Setter Property="BorderThickness" Value="2"/>
    <Setter Property="FontSize" Value="18"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type GroupBox}">
                <Grid SnapsToDevicePixels="true">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="6"/>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="6"/>
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="*"/>
                        <RowDefinition Height="6"/>
                    </Grid.RowDefinitions>
                    <Border BorderBrush="Transparent" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.ColumnSpan="4" Grid.Column="0" CornerRadius="5" Grid.Row="1" Grid.RowSpan="3"/>
                    <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Grid.ColumnSpan="4" CornerRadius="5" Grid.Row="1" Grid.RowSpan="3">
                        <Border.OpacityMask>
                            <MultiBinding ConverterParameter="7" Converter="{StaticResource BorderGapMaskConverter}">
                                <Binding ElementName="Header" Path="ActualWidth"/>
                                <Binding Path="ActualWidth" RelativeSource="{RelativeSource Self}"/>
                                <Binding Path="ActualHeight" RelativeSource="{RelativeSource Self}"/>
                            </MultiBinding>
                        </Border.OpacityMask>
                    </Border>
                    <Border x:Name="Header" Grid.Column="1" Padding="3,1,3,0" Grid.Row="0" Grid.RowSpan="2">
                        <ContentPresenter TextElement.Foreground="Blue" ContentSource="Header" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                    </Border>
                    <ContentPresenter Grid.ColumnSpan="2" Grid.Column="1" Margin="{TemplateBinding Padding}" Grid.Row="2" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>