chore: add avalonia Expander demo.
This commit is contained in:
1 parent
840493b375
commit
99c1effd84
7 files changed
+672
-13
No files matched your search
@@ -0,0 +1,341 @@
|
|||||||
|
<UserControl xmlns="https://github.com/avaloniaui"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||||
|
x:Class="HandyControlDemo.UserControl.ExpanderDemo">
|
||||||
|
<ScrollViewer>
|
||||||
|
<hc:UniformSpacingPanel Margin="32"
|
||||||
|
Orientation="Vertical"
|
||||||
|
Spacing="32">
|
||||||
|
<hc:UniformSpacingPanel Spacing="32"
|
||||||
|
ChildWrapping="Wrap"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center">
|
||||||
|
<hc:UniformSpacingPanel Orientation="Vertical"
|
||||||
|
Spacing="32">
|
||||||
|
<StackPanel Width="240">
|
||||||
|
<Expander Header="Title">
|
||||||
|
<Border Height="100"
|
||||||
|
BorderThickness="1,0,1,1"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="0,0,4,4" />
|
||||||
|
</Expander>
|
||||||
|
<Expander Margin="0,4,0,0"
|
||||||
|
Header="Title">
|
||||||
|
<Border Height="100"
|
||||||
|
BorderThickness="1,0,1,1"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="0,0,4,4" />
|
||||||
|
</Expander>
|
||||||
|
<Expander Margin="0,4,0,0"
|
||||||
|
Header="Title">
|
||||||
|
<Border Height="100"
|
||||||
|
BorderThickness="1,0,1,1"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="0,0,4,4" />
|
||||||
|
</Expander>
|
||||||
|
<Expander Margin="0,4,0,0"
|
||||||
|
Header="Title">
|
||||||
|
<Border Height="100"
|
||||||
|
BorderThickness="1,0,1,1"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="0,0,4,4" />
|
||||||
|
</Expander>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel Width="240">
|
||||||
|
<Expander Header="Title"
|
||||||
|
ExpandDirection="Up">
|
||||||
|
<Border Height="100"
|
||||||
|
BorderThickness="1,1,1,0"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="4,4,0,0" />
|
||||||
|
</Expander>
|
||||||
|
<Expander Margin="0,4,0,0"
|
||||||
|
Header="Title"
|
||||||
|
ExpandDirection="Up">
|
||||||
|
<Border Height="100"
|
||||||
|
BorderThickness="1,1,1,0"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="4,4,0,0" />
|
||||||
|
</Expander>
|
||||||
|
<Expander Margin="0,4,0,0"
|
||||||
|
Header="Title"
|
||||||
|
ExpandDirection="Up">
|
||||||
|
<Border Height="100"
|
||||||
|
BorderThickness="1,1,1,0"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="4,4,0,0" />
|
||||||
|
</Expander>
|
||||||
|
<Expander Margin="0,4,0,0"
|
||||||
|
Header="Title"
|
||||||
|
ExpandDirection="Up">
|
||||||
|
<Border Height="100"
|
||||||
|
BorderThickness="1,1,1,0"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="4,4,0,0" />
|
||||||
|
</Expander>
|
||||||
|
</StackPanel>
|
||||||
|
</hc:UniformSpacingPanel>
|
||||||
|
<hc:UniformSpacingPanel Spacing="32"
|
||||||
|
ChildWrapping="Wrap">
|
||||||
|
<StackPanel Height="240"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<Expander Header="Title"
|
||||||
|
ExpandDirection="Left">
|
||||||
|
<Border Width="100"
|
||||||
|
BorderThickness="1,1,0,1"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="4,0,0,4" />
|
||||||
|
</Expander>
|
||||||
|
<Expander Margin="4,0,0,0"
|
||||||
|
Header="Title"
|
||||||
|
ExpandDirection="Left">
|
||||||
|
<Border Width="100"
|
||||||
|
BorderThickness="1,1,0,1"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="4,0,0,4" />
|
||||||
|
</Expander>
|
||||||
|
<Expander Margin="4,0,0,0"
|
||||||
|
Header="Title"
|
||||||
|
ExpandDirection="Left">
|
||||||
|
<Border Width="100"
|
||||||
|
BorderThickness="1,1,0,1"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="4,0,0,4" />
|
||||||
|
</Expander>
|
||||||
|
<Expander Margin="4,0,0,0"
|
||||||
|
Header="Title"
|
||||||
|
ExpandDirection="Left">
|
||||||
|
<Border Width="100"
|
||||||
|
BorderThickness="1,1,0,1"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="4,0,0,4" />
|
||||||
|
</Expander>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel Height="240"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<Expander Header="Title"
|
||||||
|
ExpandDirection="Right">
|
||||||
|
<Border Width="100"
|
||||||
|
BorderThickness="0,1,1,1"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="0,4,4,0" />
|
||||||
|
</Expander>
|
||||||
|
<Expander Margin="4,0,0,0"
|
||||||
|
Header="Title"
|
||||||
|
ExpandDirection="Right">
|
||||||
|
<Border Width="100"
|
||||||
|
BorderThickness="0,1,1,1"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="0,4,4,0" />
|
||||||
|
</Expander>
|
||||||
|
<Expander Margin="4,0,0,0"
|
||||||
|
Header="Title"
|
||||||
|
ExpandDirection="Right">
|
||||||
|
<Border Width="100"
|
||||||
|
BorderThickness="0,1,1,1"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="0,4,4,0" />
|
||||||
|
</Expander>
|
||||||
|
<Expander Margin="4,0,0,0"
|
||||||
|
Header="Title"
|
||||||
|
ExpandDirection="Right">
|
||||||
|
<Border Width="100"
|
||||||
|
BorderThickness="0,1,1,1"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="0,4,4,0" />
|
||||||
|
</Expander>
|
||||||
|
</StackPanel>
|
||||||
|
</hc:UniformSpacingPanel>
|
||||||
|
</hc:UniformSpacingPanel>
|
||||||
|
<hc:UniformSpacingPanel Spacing="32"
|
||||||
|
ChildWrapping="Wrap"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center">
|
||||||
|
<hc:UniformSpacingPanel Orientation="Vertical"
|
||||||
|
Spacing="32">
|
||||||
|
<StackPanel Width="240">
|
||||||
|
<Expander Theme="{StaticResource Expander.Small}"
|
||||||
|
Header="Title">
|
||||||
|
<Border Height="100"
|
||||||
|
BorderThickness="1,0,1,1"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="0,0,4,4" />
|
||||||
|
</Expander>
|
||||||
|
<Expander Theme="{StaticResource Expander.Small}"
|
||||||
|
Margin="0,4,0,0"
|
||||||
|
Header="Title">
|
||||||
|
<Border Height="100"
|
||||||
|
BorderThickness="1,0,1,1"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="0,0,4,4" />
|
||||||
|
</Expander>
|
||||||
|
<Expander Theme="{StaticResource Expander.Small}"
|
||||||
|
Margin="0,4,0,0"
|
||||||
|
Header="Title">
|
||||||
|
<Border Height="100"
|
||||||
|
BorderThickness="1,0,1,1"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="0,0,4,4" />
|
||||||
|
</Expander>
|
||||||
|
<Expander Theme="{StaticResource Expander.Small}"
|
||||||
|
Margin="0,4,0,0"
|
||||||
|
Header="Title">
|
||||||
|
<Border Height="100"
|
||||||
|
BorderThickness="1,0,1,1"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="0,0,4,4" />
|
||||||
|
</Expander>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel Width="240">
|
||||||
|
<Expander Theme="{StaticResource Expander.Small}"
|
||||||
|
Header="Title"
|
||||||
|
ExpandDirection="Up">
|
||||||
|
<Border Height="100"
|
||||||
|
BorderThickness="1,1,1,0"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="4,4,0,0" />
|
||||||
|
</Expander>
|
||||||
|
<Expander Theme="{StaticResource Expander.Small}"
|
||||||
|
Margin="0,4,0,0"
|
||||||
|
Header="Title"
|
||||||
|
ExpandDirection="Up">
|
||||||
|
<Border Height="100"
|
||||||
|
BorderThickness="1,1,1,0"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="4,4,0,0" />
|
||||||
|
</Expander>
|
||||||
|
<Expander Theme="{StaticResource Expander.Small}"
|
||||||
|
Margin="0,4,0,0"
|
||||||
|
Header="Title"
|
||||||
|
ExpandDirection="Up">
|
||||||
|
<Border Height="100"
|
||||||
|
BorderThickness="1,1,1,0"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="4,4,0,0" />
|
||||||
|
</Expander>
|
||||||
|
<Expander Theme="{StaticResource Expander.Small}"
|
||||||
|
Margin="0,4,0,0"
|
||||||
|
Header="Title"
|
||||||
|
ExpandDirection="Up">
|
||||||
|
<Border Height="100"
|
||||||
|
BorderThickness="1,1,1,0"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="4,4,0,0" />
|
||||||
|
</Expander>
|
||||||
|
</StackPanel>
|
||||||
|
</hc:UniformSpacingPanel>
|
||||||
|
<hc:UniformSpacingPanel Spacing="32"
|
||||||
|
ChildWrapping="Wrap">
|
||||||
|
<StackPanel Height="240"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<Expander Theme="{StaticResource Expander.Small}"
|
||||||
|
Header="Title"
|
||||||
|
ExpandDirection="Left">
|
||||||
|
<Border Width="100"
|
||||||
|
BorderThickness="1,1,0,1"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="4,0,0,4" />
|
||||||
|
</Expander>
|
||||||
|
<Expander Theme="{StaticResource Expander.Small}"
|
||||||
|
Margin="4,0,0,0"
|
||||||
|
Header="Title"
|
||||||
|
ExpandDirection="Left">
|
||||||
|
<Border Width="100"
|
||||||
|
BorderThickness="1,1,0,1"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="4,0,0,4" />
|
||||||
|
</Expander>
|
||||||
|
<Expander Theme="{StaticResource Expander.Small}"
|
||||||
|
Margin="4,0,0,0"
|
||||||
|
Header="Title"
|
||||||
|
ExpandDirection="Left">
|
||||||
|
<Border Width="100"
|
||||||
|
BorderThickness="1,1,0,1"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="4,0,0,4" />
|
||||||
|
</Expander>
|
||||||
|
<Expander Theme="{StaticResource Expander.Small}"
|
||||||
|
Margin="4,0,0,0"
|
||||||
|
Header="Title"
|
||||||
|
ExpandDirection="Left">
|
||||||
|
<Border Width="100"
|
||||||
|
BorderThickness="1,1,0,1"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="4,0,0,4" />
|
||||||
|
</Expander>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel Height="240"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<Expander Theme="{StaticResource Expander.Small}"
|
||||||
|
Header="Title"
|
||||||
|
ExpandDirection="Right">
|
||||||
|
<Border Width="100"
|
||||||
|
BorderThickness="0,1,1,1"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="0,4,4,0" />
|
||||||
|
</Expander>
|
||||||
|
<Expander Theme="{StaticResource Expander.Small}"
|
||||||
|
Margin="4,0,0,0"
|
||||||
|
Header="Title"
|
||||||
|
ExpandDirection="Right">
|
||||||
|
<Border Width="100"
|
||||||
|
BorderThickness="0,1,1,1"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="0,4,4,0" />
|
||||||
|
</Expander>
|
||||||
|
<Expander Theme="{StaticResource Expander.Small}"
|
||||||
|
Margin="4,0,0,0"
|
||||||
|
Header="Title"
|
||||||
|
ExpandDirection="Right">
|
||||||
|
<Border Width="100"
|
||||||
|
BorderThickness="0,1,1,1"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="0,4,4,0" />
|
||||||
|
</Expander>
|
||||||
|
<Expander Theme="{StaticResource Expander.Small}"
|
||||||
|
Margin="4,0,0,0"
|
||||||
|
Header="Title"
|
||||||
|
ExpandDirection="Right">
|
||||||
|
<Border Width="100"
|
||||||
|
BorderThickness="0,1,1,1"
|
||||||
|
BorderBrush="{DynamicResource BorderBrush}"
|
||||||
|
Background="{DynamicResource RegionBrush}"
|
||||||
|
CornerRadius="0,4,4,0" />
|
||||||
|
</Expander>
|
||||||
|
</StackPanel>
|
||||||
|
</hc:UniformSpacingPanel>
|
||||||
|
</hc:UniformSpacingPanel>
|
||||||
|
</hc:UniformSpacingPanel>
|
||||||
|
</ScrollViewer>
|
||||||
|
</UserControl>
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
namespace HandyControlDemo.UserControl;
|
||||||
|
|
||||||
|
public partial class ExpanderDemo : Avalonia.Controls.UserControl
|
||||||
|
{
|
||||||
|
public ExpanderDemo()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -6,5 +6,6 @@
|
|||||||
<converter:BorderCircularConverter x:Key="BorderCircularConverter" />
|
<converter:BorderCircularConverter x:Key="BorderCircularConverter" />
|
||||||
<converter:BorderCircularClipConverter x:Key="BorderCircularClipConverter" />
|
<converter:BorderCircularClipConverter x:Key="BorderCircularClipConverter" />
|
||||||
<converter:GeometrySpacingConverter x:Key="GeometrySpacingConverter" />
|
<converter:GeometrySpacingConverter x:Key="GeometrySpacingConverter" />
|
||||||
|
<converter:CornerRadiusSplitConverter x:Key="CornerRadiusSplitConverter" />
|
||||||
|
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
@@ -0,0 +1,266 @@
|
|||||||
|
<ResourceDictionary xmlns="https://github.com/avaloniaui"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:hc="clr-namespace:HandyControl.Controls">
|
||||||
|
<ControlTemplate x:Key="ExpanderLeftTemplate"
|
||||||
|
TargetType="Expander">
|
||||||
|
<Grid ColumnDefinitions="*, Auto">
|
||||||
|
<ToggleButton Grid.Column="1"
|
||||||
|
VerticalAlignment="Stretch"
|
||||||
|
VerticalContentAlignment="Stretch"
|
||||||
|
Focusable="False"
|
||||||
|
Padding="0,0,0,10"
|
||||||
|
BorderBrush="{TemplateBinding BorderBrush}"
|
||||||
|
BorderThickness="{TemplateBinding BorderThickness}"
|
||||||
|
Background="{TemplateBinding Background}"
|
||||||
|
Foreground="{TemplateBinding Foreground}"
|
||||||
|
IsChecked="{Binding IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
|
||||||
|
MinWidth="{TemplateBinding MinWidth}"
|
||||||
|
Theme="{StaticResource ToggleButtonCustom}">
|
||||||
|
<LayoutTransformControl>
|
||||||
|
<LayoutTransformControl.LayoutTransform>
|
||||||
|
<RotateTransform Angle="-90" />
|
||||||
|
</LayoutTransformControl.LayoutTransform>
|
||||||
|
<Grid ColumnDefinitions="*,30">
|
||||||
|
<ContentPresenter Content="{TemplateBinding Header}"
|
||||||
|
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
|
||||||
|
VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
|
||||||
|
<Path x:Name="PathArrow"
|
||||||
|
IsHitTestVisible="False"
|
||||||
|
Grid.Column="1"
|
||||||
|
Stretch="Uniform"
|
||||||
|
Fill="{TemplateBinding Foreground}"
|
||||||
|
Width="12"
|
||||||
|
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
|
||||||
|
HorizontalAlignment="Center" />
|
||||||
|
</Grid>
|
||||||
|
</LayoutTransformControl>
|
||||||
|
</ToggleButton>
|
||||||
|
<ContentPresenter Name="PART_ContentPresenter"
|
||||||
|
IsVisible="{TemplateBinding IsExpanded}"
|
||||||
|
Content="{TemplateBinding Content}"
|
||||||
|
ContentTemplate="{TemplateBinding ContentTemplate}"
|
||||||
|
Grid.Column="0" />
|
||||||
|
</Grid>
|
||||||
|
</ControlTemplate>
|
||||||
|
|
||||||
|
<ControlTemplate x:Key="ExpanderUpTemplate"
|
||||||
|
TargetType="Expander">
|
||||||
|
<Grid RowDefinitions="*,Auto">
|
||||||
|
<ToggleButton Grid.Row="1"
|
||||||
|
HorizontalAlignment="Stretch"
|
||||||
|
HorizontalContentAlignment="Stretch"
|
||||||
|
Focusable="False"
|
||||||
|
Padding="10,0,0,0"
|
||||||
|
BorderBrush="{TemplateBinding BorderBrush}"
|
||||||
|
BorderThickness="{TemplateBinding BorderThickness}"
|
||||||
|
Background="{TemplateBinding Background}"
|
||||||
|
Foreground="{TemplateBinding Foreground}"
|
||||||
|
IsChecked="{Binding IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
|
||||||
|
MinHeight="{TemplateBinding MinHeight}"
|
||||||
|
Theme="{StaticResource ToggleButtonCustom}">
|
||||||
|
<Grid ColumnDefinitions="*,30">
|
||||||
|
<ContentPresenter Content="{TemplateBinding Header}"
|
||||||
|
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
|
||||||
|
VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
|
||||||
|
<Path x:Name="PathArrow"
|
||||||
|
IsHitTestVisible="False"
|
||||||
|
Grid.Column="1"
|
||||||
|
Stretch="Uniform"
|
||||||
|
Fill="{TemplateBinding Foreground}"
|
||||||
|
Width="12"
|
||||||
|
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
|
||||||
|
HorizontalAlignment="Center" />
|
||||||
|
</Grid>
|
||||||
|
</ToggleButton>
|
||||||
|
<ContentPresenter x:Name="PART_ContentPresenter"
|
||||||
|
IsVisible="{TemplateBinding IsExpanded}"
|
||||||
|
Content="{TemplateBinding Content}"
|
||||||
|
ContentTemplate="{TemplateBinding ContentTemplate}"
|
||||||
|
Grid.Row="0" />
|
||||||
|
</Grid>
|
||||||
|
</ControlTemplate>
|
||||||
|
|
||||||
|
<ControlTemplate x:Key="ExpanderRightTemplate"
|
||||||
|
TargetType="Expander">
|
||||||
|
<Grid ColumnDefinitions="Auto,*">
|
||||||
|
<ToggleButton VerticalAlignment="Stretch"
|
||||||
|
VerticalContentAlignment="Stretch"
|
||||||
|
Focusable="False"
|
||||||
|
Padding="0,0,0,10"
|
||||||
|
BorderBrush="{TemplateBinding BorderBrush}"
|
||||||
|
BorderThickness="{TemplateBinding BorderThickness}"
|
||||||
|
Background="{TemplateBinding Background}"
|
||||||
|
Foreground="{TemplateBinding Foreground}"
|
||||||
|
IsChecked="{Binding IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
|
||||||
|
MinWidth="{TemplateBinding MinWidth}"
|
||||||
|
Theme="{StaticResource ToggleButtonCustom}">
|
||||||
|
<LayoutTransformControl>
|
||||||
|
<LayoutTransformControl.LayoutTransform>
|
||||||
|
<RotateTransform Angle="-90" />
|
||||||
|
</LayoutTransformControl.LayoutTransform>
|
||||||
|
<Grid ColumnDefinitions="*,30">
|
||||||
|
<ContentPresenter Content="{TemplateBinding Header}"
|
||||||
|
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
|
||||||
|
VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
|
||||||
|
<Path x:Name="PathArrow"
|
||||||
|
IsHitTestVisible="False"
|
||||||
|
Grid.Column="1"
|
||||||
|
Stretch="Uniform"
|
||||||
|
Fill="{TemplateBinding Foreground}"
|
||||||
|
Width="12"
|
||||||
|
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
|
||||||
|
HorizontalAlignment="Center" />
|
||||||
|
</Grid>
|
||||||
|
</LayoutTransformControl>
|
||||||
|
</ToggleButton>
|
||||||
|
<ContentPresenter x:Name="PART_ContentPresenter"
|
||||||
|
IsVisible="{TemplateBinding IsExpanded}"
|
||||||
|
Content="{TemplateBinding Content}"
|
||||||
|
ContentTemplate="{TemplateBinding ContentTemplate}"
|
||||||
|
Grid.Column="1" />
|
||||||
|
</Grid>
|
||||||
|
</ControlTemplate>
|
||||||
|
|
||||||
|
<ControlTemplate x:Key="ExpanderDownTemplate"
|
||||||
|
TargetType="Expander">
|
||||||
|
<Grid RowDefinitions="Auto,*">
|
||||||
|
<ToggleButton HorizontalAlignment="Stretch"
|
||||||
|
HorizontalContentAlignment="Stretch"
|
||||||
|
Focusable="False"
|
||||||
|
Padding="10,0,0,0"
|
||||||
|
BorderBrush="{TemplateBinding BorderBrush}"
|
||||||
|
BorderThickness="{TemplateBinding BorderThickness}"
|
||||||
|
Background="{TemplateBinding Background}"
|
||||||
|
Foreground="{TemplateBinding Foreground}"
|
||||||
|
IsChecked="{Binding IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
|
||||||
|
MinHeight="{TemplateBinding MinHeight}"
|
||||||
|
Theme="{StaticResource ToggleButtonCustom}">
|
||||||
|
<Grid ColumnDefinitions="*,30">
|
||||||
|
<ContentPresenter Content="{TemplateBinding Header}"
|
||||||
|
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
|
||||||
|
VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
|
||||||
|
<Path x:Name="PathArrow"
|
||||||
|
IsHitTestVisible="False"
|
||||||
|
Grid.Column="1"
|
||||||
|
Stretch="Uniform"
|
||||||
|
Fill="{TemplateBinding Foreground}"
|
||||||
|
Width="12"
|
||||||
|
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
|
||||||
|
HorizontalAlignment="Center" />
|
||||||
|
</Grid>
|
||||||
|
</ToggleButton>
|
||||||
|
<ContentPresenter x:Name="PART_ContentPresenter"
|
||||||
|
IsVisible="{TemplateBinding IsExpanded}"
|
||||||
|
Content="{TemplateBinding Content}"
|
||||||
|
ContentTemplate="{TemplateBinding ContentTemplate}"
|
||||||
|
Grid.Row="1" />
|
||||||
|
</Grid>
|
||||||
|
</ControlTemplate>
|
||||||
|
|
||||||
|
<ControlTheme x:Key="ExpanderBaseStyle"
|
||||||
|
TargetType="Expander">
|
||||||
|
<Setter Property="Foreground"
|
||||||
|
Value="{DynamicResource PrimaryTextBrush}" />
|
||||||
|
<Setter Property="Background"
|
||||||
|
Value="{DynamicResource SecondaryRegionBrush}" />
|
||||||
|
<Setter Property="HorizontalContentAlignment"
|
||||||
|
Value="Left" />
|
||||||
|
<Setter Property="VerticalContentAlignment"
|
||||||
|
Value="Center" />
|
||||||
|
<Setter Property="BorderBrush"
|
||||||
|
Value="{DynamicResource BorderBrush}" />
|
||||||
|
<Setter Property="BorderThickness"
|
||||||
|
Value="1" />
|
||||||
|
<Setter Property="MinHeight"
|
||||||
|
Value="{StaticResource DefaultControlHeight}" />
|
||||||
|
<Setter Property="MinWidth"
|
||||||
|
Value="{StaticResource DefaultControlHeight}" />
|
||||||
|
<Setter Property="hc:BorderElement.CornerRadius"
|
||||||
|
Value="{StaticResource DefaultCornerRadius}" />
|
||||||
|
|
||||||
|
<Style Selector="^:left">
|
||||||
|
<Setter Property="Template"
|
||||||
|
Value="{StaticResource ExpanderLeftTemplate}" />
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<Style Selector="^:up">
|
||||||
|
<Setter Property="Template"
|
||||||
|
Value="{StaticResource ExpanderUpTemplate}" />
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<Style Selector="^:right">
|
||||||
|
<Setter Property="Template"
|
||||||
|
Value="{StaticResource ExpanderRightTemplate}" />
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<Style Selector="^:down">
|
||||||
|
<Setter Property="Template"
|
||||||
|
Value="{StaticResource ExpanderDownTemplate}" />
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<Style Selector="^[IsExpanded=True]">
|
||||||
|
<Style Selector="^:left /template/ ToggleButton">
|
||||||
|
<Setter Property="hc:BorderElement.CornerRadius"
|
||||||
|
Value="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource CornerRadiusSplitConverter}, ConverterParameter='0,1,1,0'}">
|
||||||
|
</Setter>
|
||||||
|
</Style>
|
||||||
|
<Style Selector="^:up /template/ ToggleButton">
|
||||||
|
<Setter Property="hc:BorderElement.CornerRadius"
|
||||||
|
Value="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource CornerRadiusSplitConverter}, ConverterParameter='0,0,1,1'}">
|
||||||
|
</Setter>
|
||||||
|
</Style>
|
||||||
|
<Style Selector="^:right /template/ ToggleButton">
|
||||||
|
<Setter Property="hc:BorderElement.CornerRadius"
|
||||||
|
Value="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource CornerRadiusSplitConverter}, ConverterParameter='1,0,0,1'}">
|
||||||
|
</Setter>
|
||||||
|
</Style>
|
||||||
|
<Style Selector="^:down /template/ ToggleButton">
|
||||||
|
<Setter Property="hc:BorderElement.CornerRadius"
|
||||||
|
Value="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource CornerRadiusSplitConverter}, ConverterParameter='1,1,0,0'}">
|
||||||
|
</Setter>
|
||||||
|
</Style>
|
||||||
|
<Style Selector="^:left /template/ Path#PathArrow, ^:up /template/ Path#PathArrow">
|
||||||
|
<Setter Property="Data"
|
||||||
|
Value="{StaticResource DownGeometry}" />
|
||||||
|
</Style>
|
||||||
|
<Style Selector="^:right /template/ Path#PathArrow, ^:down /template/ Path#PathArrow">
|
||||||
|
<Setter Property="Data"
|
||||||
|
Value="{StaticResource UpGeometry}" />
|
||||||
|
</Style>
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<Style Selector="^[IsExpanded=False]">
|
||||||
|
<Style Selector="^ /template/ ToggleButton">
|
||||||
|
<Setter Property="hc:BorderElement.CornerRadius"
|
||||||
|
Value="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource CornerRadiusSplitConverter}, ConverterParameter='1,1,1,1'}">
|
||||||
|
</Setter>
|
||||||
|
</Style>
|
||||||
|
<Style Selector="^:left /template/ Path#PathArrow, ^:up /template/ Path#PathArrow">
|
||||||
|
<Setter Property="Data"
|
||||||
|
Value="{StaticResource UpGeometry}" />
|
||||||
|
</Style>
|
||||||
|
<Style Selector="^:right /template/ Path#PathArrow, ^:down /template/ Path#PathArrow">
|
||||||
|
<Setter Property="Data"
|
||||||
|
Value="{StaticResource DownGeometry}" />
|
||||||
|
</Style>
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<Style Selector="^:disabled">
|
||||||
|
<Setter Property="Opacity"
|
||||||
|
Value="0.4" />
|
||||||
|
</Style>
|
||||||
|
</ControlTheme>
|
||||||
|
|
||||||
|
<ControlTheme x:Key="{x:Type Expander}"
|
||||||
|
BasedOn="{StaticResource ExpanderBaseStyle}"
|
||||||
|
TargetType="Expander" />
|
||||||
|
|
||||||
|
<ControlTheme x:Key="Expander.Small"
|
||||||
|
BasedOn="{StaticResource ExpanderBaseStyle}"
|
||||||
|
TargetType="Expander">
|
||||||
|
<Setter Property="MinHeight"
|
||||||
|
Value="20" />
|
||||||
|
<Setter Property="MinWidth"
|
||||||
|
Value="20" />
|
||||||
|
</ControlTheme>
|
||||||
|
</ResourceDictionary>
|
||||||
@@ -33,6 +33,7 @@
|
|||||||
<MergeResourceInclude Source="/Themes/Styles/ListBox.axaml" />
|
<MergeResourceInclude Source="/Themes/Styles/ListBox.axaml" />
|
||||||
<MergeResourceInclude Source="/Themes/Styles/Label.axaml" />
|
<MergeResourceInclude Source="/Themes/Styles/Label.axaml" />
|
||||||
<MergeResourceInclude Source="/Themes/Styles/Slider.axaml" />
|
<MergeResourceInclude Source="/Themes/Styles/Slider.axaml" />
|
||||||
|
<MergeResourceInclude Source="/Themes/Styles/Expander.axaml" />
|
||||||
</ResourceDictionary.MergedDictionaries>
|
</ResourceDictionary.MergedDictionaries>
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
</Styles.Resources>
|
</Styles.Resources>
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
using System;
|
||||||
|
using System.Globalization;
|
||||||
|
using Avalonia;
|
||||||
|
using Avalonia.Data.Converters;
|
||||||
|
|
||||||
|
namespace HandyControl.Tools.Converter;
|
||||||
|
|
||||||
|
public class CornerRadiusSplitConverter : IValueConverter
|
||||||
|
{
|
||||||
|
public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
|
||||||
|
{
|
||||||
|
if (value is not CornerRadius cornerRadius)
|
||||||
|
{
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (parameter is not string str)
|
||||||
|
{
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
string[] arr = str.Split(',');
|
||||||
|
if (arr.Length != 4)
|
||||||
|
{
|
||||||
|
return cornerRadius;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new CornerRadius(
|
||||||
|
arr[0].Trim().Equals("1") ? cornerRadius.TopLeft : 0,
|
||||||
|
arr[1].Trim().Equals("1") ? cornerRadius.TopRight : 0,
|
||||||
|
arr[2].Trim().Equals("1") ? cornerRadius.BottomRight : 0,
|
||||||
|
arr[3].Trim().Equals("1") ? cornerRadius.BottomLeft : 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) =>
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
@@ -9,21 +9,24 @@ public class CornerRadiusSplitConverter : IValueConverter
|
|||||||
{
|
{
|
||||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
{
|
{
|
||||||
if (value is CornerRadius cornerRadius)
|
if (value is not CornerRadius cornerRadius)
|
||||||
{
|
{
|
||||||
if (parameter is string str)
|
return value;
|
||||||
{
|
|
||||||
var arr = str.Split(',');
|
|
||||||
if (arr.Length != 4) return cornerRadius;
|
|
||||||
|
|
||||||
return new CornerRadius(
|
|
||||||
arr[0].Equals("1") ? cornerRadius.TopLeft : 0,
|
|
||||||
arr[1].Equals("1") ? cornerRadius.TopRight : 0,
|
|
||||||
arr[2].Equals("1") ? cornerRadius.BottomRight : 0,
|
|
||||||
arr[3].Equals("1") ? cornerRadius.BottomLeft : 0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return value;
|
|
||||||
|
if (parameter is not string str)
|
||||||
|
{
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
var arr = str.Split(',');
|
||||||
|
if (arr.Length != 4) return cornerRadius;
|
||||||
|
|
||||||
|
return new CornerRadius(
|
||||||
|
arr[0].Trim().Equals("1") ? cornerRadius.TopLeft : 0,
|
||||||
|
arr[1].Trim().Equals("1") ? cornerRadius.TopRight : 0,
|
||||||
|
arr[2].Trim().Equals("1") ? cornerRadius.BottomRight : 0,
|
||||||
|
arr[3].Trim().Equals("1") ? cornerRadius.BottomLeft : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
|
|||||||
Reference in new issue
Block a user