Wpf 仅更改扩展器 header 的背景颜色

Wpf change the background colour of an expander's header only

我看了很多 questions/answers 但找不到我要找的东西,

我正在尝试仅更改扩展器 header 的背景颜色,而不是让扩展器中的内容继续使用相同的颜色。最好在 xaml 内,但 vb.net 解决方案就足够了。

(任何意见或建议都会有所帮助)

如果这是一个重复的问题,请告诉我答案并让问题悬而未决,以帮助其他人避免以后遇到同样的问题!

谢谢。

我不确定这是否正是您要找的,但您可以通过简单地这样做来更改 header 背景:

 <Expander VerticalAlignment="Center">
        <Expander.Header>
            <Grid Background="LightBlue">
                <TextBlock Text="Expander Header"/>
            </Grid>
        </Expander.Header>
        <StackPanel>
            <TextBlock Text="Cotent"></TextBlock>
        </StackPanel>
    </Expander>

或者您可以使用 HeaderTemplate

覆盖默认 ExpanderHeader DataTemplate
<Window.Resources>
    <DataTemplate x:Key="HeaderText">
        <Border Height="25" Background="LightBlue">
            <TextBlock Text="{Binding}" 
                    Margin="4 0"
                    VerticalAlignment="Center"
                    Foreground="White"
                    FontSize="11" 
                    FontWeight="Normal"
                   />
        </Border>
    </DataTemplate>

    <Style TargetType="{x:Type Expander}">
        <Setter Property="HeaderTemplate" Value="{StaticResource HeaderText}"/>
    </Style>
</Window.Resources>


<Grid x:Name="LayoutRoot">
    <Expander VerticalAlignment="Center" Header="Expander Header">        
        <StackPanel>
            <TextBlock Text="Cotent"></TextBlock>
        </StackPanel>
    </Expander>
</Grid>

我在设置页眉背景时遇到了很多问题。 我发现最容易做到的是简单地制作一个彩色矩形并将其放在扩展器后面。 (使用边距和高度使其适合)

<Rectangle Grid.Row="1" Grid.Column="0" Fill="LightBlue" Height="33" Margin="0,0,0,-35" />

如果您想要圆角,请使用边框:

<Border CornerRadius="15" Height="33" Margin="0,0,0,-35" Background="LightBlue" />