Files
ShrlAlgoToolkit/Melskin/Controls/Divider.xaml
2026-02-12 21:29:00 +08:00

78 lines
4.2 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:controls="clr-namespace:Melskin.Controls"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="{x:Type controls:Divider}">
<Setter Property="Foreground" Value="{DynamicResource DividerBrush}" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type controls:Divider}">
<Grid>
<!-- 唯一的水平布局容器,智能且优雅 -->
<Grid x:Name="HorizontalLayout">
<Grid.ColumnDefinitions>
<!-- 定义三列并给它们命名以便在Trigger中引用 -->
<ColumnDefinition Width="*" x:Name="ColumnLeft" />
<ColumnDefinition Width="Auto" x:Name="ColumnContent" />
<ColumnDefinition Width="*" x:Name="ColumnRight" />
</Grid.ColumnDefinitions>
<Rectangle
Fill="{TemplateBinding Foreground}"
Grid.Column="0"
Height="1"
Margin="0,0,16,0" />
<ContentPresenter
ContentSource="Content"
Grid.Column="1"
TextElement.Foreground="{DynamicResource TextSecondaryBrush}"
VerticalAlignment="Center"
x:Name="ContentHost" />
<Rectangle
Fill="{TemplateBinding Foreground}"
Grid.Column="2"
Height="1"
Margin="16,0,0,0" />
</Grid>
<!-- 唯一的垂直线条 -->
<Rectangle
Fill="{TemplateBinding Foreground}"
Visibility="Collapsed"
Width="1"
x:Name="VerticalLayout" />
</Grid>
<ControlTemplate.Triggers>
<!-- 当文本居左时,改变列的宽度定义 -->
<Trigger Property="TextOrientation" Value="Left">
<!-- 左列变为固定宽度,右列填满剩余空间 -->
<Setter Property="Width" TargetName="ColumnLeft" Value="40" />
<Setter Property="Width" TargetName="ColumnRight" Value="*" />
</Trigger>
<!-- 当文本居右时,改变列的宽度定义 -->
<Trigger Property="TextOrientation" Value="Right">
<!-- 左列填满剩余空间,右列变为固定宽度 -->
<Setter Property="Width" TargetName="ColumnLeft" Value="*" />
<Setter Property="Width" TargetName="ColumnRight" Value="40" />
</Trigger>
<!-- 当方向为垂直时,切换布局 -->
<Trigger Property="Orientation" Value="Vertical">
<Setter Property="Margin" Value="8,0" />
<Setter Property="Visibility" TargetName="HorizontalLayout" Value="Collapsed" />
<Setter Property="Visibility" TargetName="VerticalLayout" Value="Visible" />
</Trigger>
<!-- 当无内容时,隐藏内容区域 -->
<Trigger Property="Content" Value="{x:Null}">
<Setter Property="Visibility" TargetName="ContentHost" Value="Collapsed" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>