I would like to apply a style on a WPF Expander Header. In the following XAML I have an Expander but the style is for all of it not just for the header.
Thanks.
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="640" > <StackPanel> <StackPanel.Resources> <Style TargetType="Expander"> <Style.Resources> <LinearGradientBrush x:Key="BackBrush" StartPoint="0.5,0" EndPoint="0.5,1"> <GradientStop Color="#EF3132" Offset="0.1" /> <GradientStop Color="#D62B2B" Offset="0.9" /> </LinearGradientBrush> </Style.Resources> <Setter Property="Background" Value="{StaticResource BackBrush}"/> </Style> </StackPanel.Resources> <Expander> <StackPanel> <TextBlock>Bike</TextBlock> <TextBlock>Car</TextBlock> <TextBlock>Truck</TextBlock> </StackPanel> </Expander> </StackPanel> </Page>
You need to change the Template , you can base it on the existing template though. H.B. so even if i just wanted to change the foreground of the icon to white, i would still have to change the whole template?
I have combined some XAML from Josh Smith and MSDN and came up with a solution. Indeed, the control (al least the header) must be retemplated.
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="400"> <StackPanel> <StackPanel.Resources> <Style TargetType="Border" x:Key="RacePitBorderStyle" > <Style.Resources> <LinearGradientBrush x:Key="BackBrush" StartPoint="0.5,0" EndPoint="0.5,1"> <GradientStop Color="#EF3132" Offset="0.1" /> <GradientStop Color="#D62B2B" Offset="0.9" /> </LinearGradientBrush> </Style.Resources> <Setter Property="Background" Value="{StaticResource BackBrush}"/> </Style> <DataTemplate x:Key="titleText"> <Border Style="{StaticResource RacePitBorderStyle}" Height="24"> <TextBlock Text="{Binding}" Margin="4 0" VerticalAlignment="Center" Foreground="White" FontSize="11" FontWeight="Normal" Width="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Expander}}, Path=ActualWidth}" TextWrapping="Wrap"/> </Border> </DataTemplate> <Style TargetType="{x:Type Expander}"> <Setter Property="HeaderTemplate" Value="{StaticResource titleText}"/> </Style> </StackPanel.Resources> <Expander Name="hcontCtrl" Header="This is the header."> <StackPanel> <TextBox>This is a textbox</TextBox> <Button>A button</Button> </StackPanel> </Expander> </StackPanel> </Page>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With