Files
Ursa.Avalonia/src/Ursa.Themes.Semi/Controls/Divider.axaml
2024-10-31 20:47:19 +08:00

130 lines
7.3 KiB
XML

<ResourceDictionary
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:u="https://irihi.tech/ursa">
<Design.PreviewWith>
<StackPanel Spacing="20">
<u:Divider Content="Hello" />
</StackPanel>
</Design.PreviewWith>
<!-- Add Resources Here -->
<ControlTheme x:Key="DividerLeftLine" TargetType="{x:Type Rectangle}">
<Setter Property="Rectangle.Fill" Value="{DynamicResource DividerBorderBrush}" />
<Setter Property="Rectangle.Height" Value="{DynamicResource SizeDividerWidth}" />
<Setter Property="Rectangle.MinWidth" Value="{DynamicResource SizeDividerLeftMinWidth}" />
<Setter Property="VerticalAlignment" Value="Center" />
</ControlTheme>
<ControlTheme x:Key="DividerRightLine" TargetType="{x:Type Rectangle}">
<Setter Property="Rectangle.Fill" Value="{DynamicResource DividerBorderBrush}" />
<Setter Property="Rectangle.Height" Value="{DynamicResource SizeDividerWidth}" />
<Setter Property="Rectangle.MinWidth" Value="{DynamicResource SizeDividerRightMinWidth}" />
<Setter Property="VerticalAlignment" Value="Center" />
</ControlTheme>
<ControlTheme x:Key="{x:Type u:Divider}" TargetType="u:Divider">
<Setter Property="HorizontalContentAlignment" Value="Left" />
<Setter Property="FontSize" Value="14" />
<Style Selector="^[Orientation=Horizontal]">
<Style Selector="^[HorizontalContentAlignment=Left]">
<Setter Property="Template">
<ControlTemplate>
<Grid
Width="{TemplateBinding Width}"
Height="{TemplateBinding Height}"
ColumnDefinitions="Auto,Auto,*">
<Rectangle Theme="{StaticResource DividerLeftLine}" />
<ContentPresenter
Grid.Column="1"
Content="{TemplateBinding Content}"
Background="{TemplateBinding Background}"
Foreground="{TemplateBinding Foreground}"
ContentTemplate="{TemplateBinding ContentTemplate}"
Margin="{DynamicResource ThicknessDividerTextMargin}"
IsVisible="{Binding Content, RelativeSource={RelativeSource TemplatedParent}, Converter={x:Static ObjectConverters.IsNotNull}}"/>
<Rectangle Grid.Column="2" Theme="{StaticResource DividerRightLine}" />
</Grid>
</ControlTemplate>
</Setter>
</Style>
<Style Selector="^[HorizontalContentAlignment=Right]">
<Setter Property="Template">
<ControlTemplate>
<Grid
Width="{TemplateBinding Width}"
Height="{TemplateBinding Height}"
ColumnDefinitions="*,Auto,Auto">
<Rectangle Theme="{StaticResource DividerLeftLine}" />
<ContentPresenter
Grid.Column="1"
Content="{TemplateBinding Content}"
Background="{TemplateBinding Background}"
Foreground="{TemplateBinding Foreground}"
ContentTemplate="{TemplateBinding ContentTemplate}"
Margin="{DynamicResource ThicknessDividerTextMargin}"
IsVisible="{Binding Content, RelativeSource={RelativeSource TemplatedParent}, Converter={x:Static ObjectConverters.IsNotNull}}"/>
<Rectangle Grid.Column="2" Theme="{StaticResource DividerRightLine}" />
</Grid>
</ControlTemplate>
</Setter>
</Style>
<Style Selector="^[HorizontalContentAlignment=Center]">
<Setter Property="Template">
<ControlTemplate>
<Grid
Width="{TemplateBinding Width}"
Height="{TemplateBinding Height}"
ColumnDefinitions="*,Auto,*">
<Rectangle Theme="{StaticResource DividerLeftLine}" />
<ContentPresenter
Grid.Column="1"
Content="{TemplateBinding Content}"
Background="{TemplateBinding Background}"
Foreground="{TemplateBinding Foreground}"
ContentTemplate="{TemplateBinding ContentTemplate}"
Margin="{DynamicResource ThicknessDividerTextMargin}"
IsVisible="{Binding Content, RelativeSource={RelativeSource TemplatedParent}, Converter={x:Static ObjectConverters.IsNotNull}}"/>
<Rectangle Grid.Column="2" Theme="{StaticResource DividerRightLine}" />
</Grid>
</ControlTemplate>
</Setter>
</Style>
<Style Selector="^[HorizontalContentAlignment=Stretch]">
<Setter Property="Template">
<ControlTemplate>
<Grid
Width="{TemplateBinding Width}"
Height="{TemplateBinding Height}"
ColumnDefinitions="*,Auto,*">
<Rectangle Theme="{StaticResource DividerLeftLine}" />
<ContentPresenter
Grid.Column="1"
Content="{TemplateBinding Content}"
Background="{TemplateBinding Background}"
Foreground="{TemplateBinding Foreground}"
ContentTemplate="{TemplateBinding ContentTemplate}"
Margin="{DynamicResource ThicknessDividerTextMargin}"
IsVisible="{Binding Content, RelativeSource={RelativeSource TemplatedParent}, Converter={x:Static ObjectConverters.IsNotNull}}"/>
<Rectangle Grid.Column="2" Theme="{StaticResource DividerRightLine}" />
</Grid>
</ControlTemplate>
</Setter>
</Style>
</Style>
<Style Selector="^[Orientation=Vertical]">
<Setter Property="Height" Value="{DynamicResource SizeDividerVerticalHeight}" />
<Setter Property="Margin" Value="{DynamicResource ThicknessDividerVerticalMargin}" />
<Setter Property="Width" Value="{DynamicResource SizeDividerWidth}" />
<Setter Property="Template">
<ControlTemplate>
<Rectangle
Width="{TemplateBinding Width}"
Height="{TemplateBinding Height}"
Fill="{DynamicResource DividerBorderBrush}" />
</ControlTemplate>
</Setter>
</Style>
</ControlTheme>
</ResourceDictionary>