Created
April 19, 2023 13:33
-
-
Save ialexpovad/661d8197dec9fef72b84e871cbe146a9 to your computer and use it in GitHub Desktop.
Styles of expander WPF
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<Style x:Key="ExpanderRightHeaderStyle" TargetType="{x:Type ToggleButton}"> | |
<Setter Property="Template"> | |
<Setter.Value> | |
<ControlTemplate TargetType="{x:Type ToggleButton}"> | |
<Border Padding="{TemplateBinding Padding}"> | |
<Grid Background="Transparent" SnapsToDevicePixels="False"> | |
<Grid.RowDefinitions> | |
<RowDefinition Height="19"/> | |
<RowDefinition Height="*"/> | |
</Grid.RowDefinitions> | |
<Grid> | |
<Grid.LayoutTransform> | |
<TransformGroup> | |
<TransformGroup.Children> | |
<TransformCollection> | |
<RotateTransform Angle="-90"/> | |
</TransformCollection> | |
</TransformGroup.Children> | |
</TransformGroup> | |
</Grid.LayoutTransform> | |
<Ellipse x:Name="circle" HorizontalAlignment="Center" Height="19" Stroke="DarkGray" VerticalAlignment="Center" Width="19"/> | |
<Path x:Name="arrow" Data="M 1,1.5 L 4.5,5 L 8,1.5" HorizontalAlignment="Center" SnapsToDevicePixels="false" Stroke="#666" StrokeThickness="2" VerticalAlignment="Center"/> | |
</Grid> | |
<ContentPresenter HorizontalAlignment="Center" Margin="0,4,0,0" Grid.Row="1" RecognizesAccessKey="True" SnapsToDevicePixels="True" VerticalAlignment="Top"/> | |
</Grid> | |
</Border> | |
<ControlTemplate.Triggers> | |
<Trigger Property="IsChecked" Value="true"> | |
<Setter Property="Data" TargetName="arrow" Value="M 1,4.5 L 4.5,1 L 8,4.5"/> | |
</Trigger> | |
<Trigger Property="IsMouseOver" Value="true"> | |
<Setter Property="Stroke" TargetName="circle" Value="#FF3C7FB1"/> | |
<Setter Property="Stroke" TargetName="arrow" Value="#222"/> | |
</Trigger> | |
<Trigger Property="IsPressed" Value="true"> | |
<Setter Property="Stroke" TargetName="circle" Value="#FF526C7B"/> | |
<Setter Property="StrokeThickness" TargetName="circle" Value="1.5"/> | |
<Setter Property="Stroke" TargetName="arrow" Value="#FF003366"/> | |
</Trigger> | |
</ControlTemplate.Triggers> | |
</ControlTemplate> | |
</Setter.Value> | |
</Setter> | |
</Style> | |
<Style x:Key="ExpanderUpHeaderStyle" TargetType="{x:Type ToggleButton}"> | |
<Setter Property="Template"> | |
<Setter.Value> | |
<ControlTemplate TargetType="{x:Type ToggleButton}"> | |
<Border Padding="{TemplateBinding Padding}"> | |
<Grid Background="Transparent" SnapsToDevicePixels="False"> | |
<Grid.ColumnDefinitions> | |
<ColumnDefinition Width="19"/> | |
<ColumnDefinition Width="*"/> | |
</Grid.ColumnDefinitions> | |
<Grid> | |
<Grid.LayoutTransform> | |
<TransformGroup> | |
<TransformGroup.Children> | |
<TransformCollection> | |
<RotateTransform Angle="180"/> | |
</TransformCollection> | |
</TransformGroup.Children> | |
</TransformGroup> | |
</Grid.LayoutTransform> | |
<Ellipse x:Name="circle" HorizontalAlignment="Center" Height="19" Stroke="DarkGray" VerticalAlignment="Center" Width="19"/> | |
<Path x:Name="arrow" Data="M 1,1.5 L 4.5,5 L 8,1.5" HorizontalAlignment="Center" SnapsToDevicePixels="false" Stroke="#666" StrokeThickness="2" VerticalAlignment="Center"/> | |
</Grid> | |
<ContentPresenter Grid.Column="1" HorizontalAlignment="Left" Margin="4,0,0,0" RecognizesAccessKey="True" SnapsToDevicePixels="True" VerticalAlignment="Center"/> | |
</Grid> | |
</Border> | |
<ControlTemplate.Triggers> | |
<Trigger Property="IsChecked" Value="true"> | |
<Setter Property="Data" TargetName="arrow" Value="M 1,4.5 L 4.5,1 L 8,4.5"/> | |
</Trigger> | |
<Trigger Property="IsMouseOver" Value="true"> | |
<Setter Property="Stroke" TargetName="circle" Value="#FF3C7FB1"/> | |
<Setter Property="Stroke" TargetName="arrow" Value="#222"/> | |
</Trigger> | |
<Trigger Property="IsPressed" Value="true"> | |
<Setter Property="Stroke" TargetName="circle" Value="#FF526C7B"/> | |
<Setter Property="StrokeThickness" TargetName="circle" Value="1.5"/> | |
<Setter Property="Stroke" TargetName="arrow" Value="#FF003366"/> | |
</Trigger> | |
</ControlTemplate.Triggers> | |
</ControlTemplate> | |
</Setter.Value> | |
</Setter> | |
</Style> | |
<!--<Style x:Key="ExpanderLeftHeaderStyle" TargetType="{x:Type ToggleButton}"> | |
<Setter Property="Template"> | |
<Setter.Value> | |
<ControlTemplate TargetType="{x:Type ToggleButton}"> | |
<Border Padding="{TemplateBinding Padding}"> | |
<Grid Background="Transparent" SnapsToDevicePixels="False"> | |
<Grid.RowDefinitions> | |
<RowDefinition Height="19"/> | |
<RowDefinition Height="*"/> | |
</Grid.RowDefinitions> | |
<Grid> | |
<Grid.LayoutTransform> | |
<TransformGroup> | |
<TransformGroup.Children> | |
<TransformCollection> | |
<RotateTransform Angle="90"/> | |
</TransformCollection> | |
</TransformGroup.Children> | |
</TransformGroup> | |
</Grid.LayoutTransform> | |
<Ellipse x:Name="circle" HorizontalAlignment="Center" Height="19" Stroke="DarkGray" VerticalAlignment="Center" Width="19"/> | |
<Path x:Name="arrow" Data="M 1,1.5 L 4.5,5 L 8,1.5" HorizontalAlignment="Center" SnapsToDevicePixels="false" Stroke="#666" StrokeThickness="2" VerticalAlignment="Center"/> | |
</Grid> | |
<ContentPresenter HorizontalAlignment="Center" Margin="0,4,0,0" Grid.Row="1" RecognizesAccessKey="True" SnapsToDevicePixels="True" VerticalAlignment="Top"/> | |
</Grid> | |
</Border> | |
<ControlTemplate.Triggers> | |
<Trigger Property="IsChecked" Value="true"> | |
<Setter Property="Data" TargetName="arrow" Value="M 1,4.5 L 4.5,1 L 8,4.5"/> | |
</Trigger> | |
<Trigger Property="IsMouseOver" Value="true"> | |
<Setter Property="Stroke" TargetName="circle" Value="#FF3C7FB1"/> | |
<Setter Property="Stroke" TargetName="arrow" Value="#222"/> | |
</Trigger> | |
<Trigger Property="IsPressed" Value="true"> | |
<Setter Property="Stroke" TargetName="circle" Value="#FF526C7B"/> | |
<Setter Property="StrokeThickness" TargetName="circle" Value="1.5"/> | |
<Setter Property="Stroke" TargetName="arrow" Value="#FF003366"/> | |
</Trigger> | |
</ControlTemplate.Triggers> | |
</ControlTemplate> | |
</Setter.Value> | |
</Setter> | |
</Style>--> | |
<Style x:Key="ExpanderHeaderFocusVisual"> | |
<Setter Property="Control.Template"> | |
<Setter.Value> | |
<ControlTemplate> | |
<Border> | |
<Rectangle Margin="0" SnapsToDevicePixels="true" Stroke="Black" StrokeThickness="1" StrokeDashArray="1 2"/> | |
</Border> | |
</ControlTemplate> | |
</Setter.Value> | |
</Setter> | |
</Style> | |
<Style x:Key="ExpanderDownHeaderStyle" TargetType="{x:Type ToggleButton}"> | |
<Setter Property="Template"> | |
<Setter.Value> | |
<ControlTemplate TargetType="{x:Type ToggleButton}"> | |
<Border Padding="{TemplateBinding Padding}"> | |
<Grid Background="Transparent" SnapsToDevicePixels="False"> | |
<Grid.ColumnDefinitions> | |
<ColumnDefinition Width="19"/> | |
<ColumnDefinition Width="*"/> | |
</Grid.ColumnDefinitions> | |
<Ellipse x:Name="circle" HorizontalAlignment="Center" Height="19" Stroke="DarkGray" VerticalAlignment="Center" Width="19"/> | |
<Path x:Name="arrow" Data="M 1,1.5 L 4.5,5 L 8,1.5" HorizontalAlignment="Center" SnapsToDevicePixels="false" Stroke="#666" StrokeThickness="2" VerticalAlignment="Center"/> | |
<ContentPresenter Grid.Column="1" HorizontalAlignment="Stretch" Margin="4,0,0,0" RecognizesAccessKey="True" SnapsToDevicePixels="True" VerticalAlignment="Center"/> | |
</Grid> | |
</Border> | |
<ControlTemplate.Triggers> | |
<Trigger Property="IsChecked" Value="true"> | |
<Setter Property="Data" TargetName="arrow" Value="M 1,4.5 L 4.5,1 L 8,4.5"/> | |
</Trigger> | |
<Trigger Property="IsMouseOver" Value="true"> | |
<Setter Property="Stroke" TargetName="circle" Value="#FF3C7FB1"/> | |
<Setter Property="Stroke" TargetName="arrow" Value="#222"/> | |
</Trigger> | |
<Trigger Property="IsPressed" Value="true"> | |
<Setter Property="Stroke" TargetName="circle" Value="#FF526C7B"/> | |
<Setter Property="StrokeThickness" TargetName="circle" Value="1.5"/> | |
<Setter Property="Stroke" TargetName="arrow" Value="#FF003366"/> | |
</Trigger> | |
</ControlTemplate.Triggers> | |
</ControlTemplate> | |
</Setter.Value> | |
</Setter> | |
</Style> | |
<Style x:Key="ExpanderStyle1" TargetType="{x:Type Expander}"> | |
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/> | |
<Setter Property="Background" Value="Transparent"/> | |
<Setter Property="HorizontalContentAlignment" Value="Stretch"/> | |
<Setter Property="VerticalContentAlignment" Value="Stretch"/> | |
<Setter Property="BorderBrush" Value="Transparent"/> | |
<Setter Property="BorderThickness" Value="1"/> | |
<Setter Property="Template"> | |
<Setter.Value> | |
<ControlTemplate TargetType="{x:Type Expander}"> | |
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="3" SnapsToDevicePixels="true"> | |
<DockPanel> | |
<ToggleButton x:Name="HeaderSite" ContentTemplate="{TemplateBinding HeaderTemplate}" ContentTemplateSelector="{TemplateBinding HeaderTemplateSelector}" Content="{TemplateBinding Header}" DockPanel.Dock="Top" Foreground="{TemplateBinding Foreground}" FontWeight="{TemplateBinding FontWeight}" FocusVisualStyle="{StaticResource ExpanderHeaderFocusVisual}" FontStyle="{TemplateBinding FontStyle}" FontStretch="{TemplateBinding FontStretch}" FontSize="{TemplateBinding FontSize}" FontFamily="{TemplateBinding FontFamily}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsChecked="{Binding IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Margin="1" MinWidth="0" MinHeight="0" Padding="{TemplateBinding Padding}" Style="{StaticResource ExpanderDownHeaderStyle}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/> | |
<ContentPresenter x:Name="ExpandSite" DockPanel.Dock="Bottom" Focusable="false" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" Visibility="Collapsed" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> | |
</DockPanel> | |
</Border> | |
<ControlTemplate.Triggers> | |
<Trigger Property="IsExpanded" Value="true"> | |
<Setter Property="Visibility" TargetName="ExpandSite" Value="Visible"/> | |
</Trigger> | |
<Trigger Property="ExpandDirection" Value="Right"> | |
<Setter Property="DockPanel.Dock" TargetName="ExpandSite" Value="Right"/> | |
<Setter Property="DockPanel.Dock" TargetName="HeaderSite" Value="Left"/> | |
<Setter Property="Style" TargetName="HeaderSite" Value="{StaticResource ExpanderRightHeaderStyle}"/> | |
</Trigger> | |
<Trigger Property="ExpandDirection" Value="Up"> | |
<Setter Property="DockPanel.Dock" TargetName="ExpandSite" Value="Top"/> | |
<Setter Property="DockPanel.Dock" TargetName="HeaderSite" Value="Bottom"/> | |
<Setter Property="Style" TargetName="HeaderSite" Value="{StaticResource ExpanderUpHeaderStyle}"/> | |
</Trigger> | |
<Trigger Property="ExpandDirection" Value="Left"> | |
<Setter Property="DockPanel.Dock" TargetName="ExpandSite" Value="Left"/> | |
<Setter Property="DockPanel.Dock" TargetName="HeaderSite" Value="Right"/> | |
<Setter Property="Style" TargetName="HeaderSite" Value="{StaticResource ExpanderLeftHeaderStyle}"/> | |
</Trigger> | |
<Trigger Property="IsEnabled" Value="false"> | |
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> | |
</Trigger> | |
</ControlTemplate.Triggers> | |
</ControlTemplate> | |
</Setter.Value> | |
</Setter> | |
</Style> | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment