feat: add avalonia extend ComboBox style.

This commit is contained in:
NaBian committed 2025-08-26 22:36:11 +08:00
1 parent 94ee336714
commit aa4fa95ab1
1 file changed
+86 -40
@@ -212,9 +212,9 @@
Text="{Binding Path=(hc:TitleElement.Title), RelativeSource={RelativeSource TemplatedParent}}" /> Text="{Binding Path=(hc:TitleElement.Title), RelativeSource={RelativeSource TemplatedParent}}" />
</DockPanel> </DockPanel>
<DataValidationErrors Grid.Row="1"> <DataValidationErrors Grid.Row="1">
<Grid ColumnDefinitions="*,Auto"> <Grid ColumnDefinitions="*,Auto,Auto">
<Border x:Name="border" <Border x:Name="border"
Grid.ColumnSpan="2" Grid.ColumnSpan="3"
CornerRadius="{TemplateBinding CornerRadius}" CornerRadius="{TemplateBinding CornerRadius}"
BorderBrush="{TemplateBinding BorderBrush}" BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}" BorderThickness="{TemplateBinding BorderThickness}"
@@ -233,24 +233,47 @@
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" /> VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" />
<Path Grid.Column="1" <Button Grid.Column="1"
IsVisible="{TemplateBinding IsDropDownOpen, Converter={x:Static BoolConverters.Not}}" HorizontalAlignment="Right"
Data="{StaticResource DownGeometry}" VerticalAlignment="Stretch"
VerticalAlignment="Center" hc:IconElement.Width="14"
HorizontalAlignment="Right" Command="{Binding $parent[ComboBox].Clear}"
Width="14" Width="{x:Static system:Double.NaN}"
Stretch="Uniform" Name="ButtonClear"
Fill="{Binding BorderBrush, ElementName=border}" Focusable="False"
Margin="{TemplateBinding Padding, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" /> DockPanel.Dock="Right"
<Path Grid.Column="1" Theme="{StaticResource ButtonIcon}"
IsVisible="{TemplateBinding IsDropDownOpen}" Padding="0,0,3,0"
Data="{StaticResource UpGeometry}" hc:IconElement.Geometry="{StaticResource DeleteFillCircleGeometry}"
VerticalAlignment="Center" Foreground="{Binding BorderBrush, ElementName=border}">
HorizontalAlignment="Right" <Button.IsVisible>
Width="14" <MultiBinding Converter="{x:Static BoolConverters.And}">
Stretch="Uniform" <Binding RelativeSource="{RelativeSource TemplatedParent}"
Fill="{Binding BorderBrush, ElementName=border}" Path="IsPointerOver" />
Margin="{TemplateBinding Padding, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" /> <Binding RelativeSource="{RelativeSource TemplatedParent}"
Path="(hc:InfoElement.ShowClearButton)" />
</MultiBinding>
</Button.IsVisible>
</Button>
<Panel Grid.Column="2"
Margin="{TemplateBinding BorderThickness, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}">
<Path IsVisible="{TemplateBinding IsDropDownOpen, Converter={x:Static BoolConverters.Not}}"
Data="{StaticResource DownGeometry}"
VerticalAlignment="Center"
HorizontalAlignment="Right"
Width="14"
Stretch="Uniform"
Fill="{Binding BorderBrush, ElementName=border}"
Margin="{TemplateBinding Padding, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" />
<Path IsVisible="{TemplateBinding IsDropDownOpen}"
Data="{StaticResource UpGeometry}"
VerticalAlignment="Center"
HorizontalAlignment="Right"
Width="14"
Stretch="Uniform"
Fill="{Binding BorderBrush, ElementName=border}"
Margin="{TemplateBinding Padding, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" />
</Panel>
<Popup Grid.Column="0" <Popup Grid.Column="0"
Name="PART_Popup" Name="PART_Popup"
WindowManagerAddShadowHint="False" WindowManagerAddShadowHint="False"
@@ -306,9 +329,9 @@
Text="{Binding Path=(hc:TitleElement.Title), RelativeSource={RelativeSource TemplatedParent}}" /> Text="{Binding Path=(hc:TitleElement.Title), RelativeSource={RelativeSource TemplatedParent}}" />
</DockPanel> </DockPanel>
<DataValidationErrors Grid.Column="1"> <DataValidationErrors Grid.Column="1">
<Grid ColumnDefinitions="*,Auto"> <Grid ColumnDefinitions="*,Auto,Auto">
<Border x:Name="border" <Border x:Name="border"
Grid.ColumnSpan="2" Grid.ColumnSpan="3"
CornerRadius="{TemplateBinding CornerRadius}" CornerRadius="{TemplateBinding CornerRadius}"
BorderBrush="{TemplateBinding BorderBrush}" BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}" BorderThickness="{TemplateBinding BorderThickness}"
@@ -327,24 +350,47 @@
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" /> VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" />
<Path Grid.Column="1" <Button Grid.Column="1"
IsVisible="{TemplateBinding IsDropDownOpen, Converter={x:Static BoolConverters.Not}}" HorizontalAlignment="Right"
Data="{StaticResource DownGeometry}" VerticalAlignment="Stretch"
VerticalAlignment="Center" hc:IconElement.Width="14"
HorizontalAlignment="Right" Command="{Binding $parent[ComboBox].Clear}"
Width="14" Width="{x:Static system:Double.NaN}"
Stretch="Uniform" Name="ButtonClear"
Fill="{Binding BorderBrush, ElementName=border}" Focusable="False"
Margin="{TemplateBinding Padding, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" /> DockPanel.Dock="Right"
<Path Grid.Column="1" Theme="{StaticResource ButtonIcon}"
IsVisible="{TemplateBinding IsDropDownOpen}" Padding="0,0,4,0"
Data="{StaticResource UpGeometry}" hc:IconElement.Geometry="{StaticResource DeleteFillCircleGeometry}"
VerticalAlignment="Center" Foreground="{Binding BorderBrush, ElementName=border}">
HorizontalAlignment="Right" <Button.IsVisible>
Width="14" <MultiBinding Converter="{x:Static BoolConverters.And}">
Stretch="Uniform" <Binding RelativeSource="{RelativeSource TemplatedParent}"
Fill="{Binding BorderBrush, ElementName=border}" Path="IsPointerOver" />
Margin="{TemplateBinding Padding, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" /> <Binding RelativeSource="{RelativeSource TemplatedParent}"
Path="(hc:InfoElement.ShowClearButton)" />
</MultiBinding>
</Button.IsVisible>
</Button>
<Panel Grid.Column="2"
Margin="{TemplateBinding BorderThickness, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}">
<Path IsVisible="{TemplateBinding IsDropDownOpen, Converter={x:Static BoolConverters.Not}}"
Data="{StaticResource DownGeometry}"
VerticalAlignment="Center"
HorizontalAlignment="Right"
Width="14"
Stretch="Uniform"
Fill="{Binding BorderBrush, ElementName=border}"
Margin="{TemplateBinding Padding, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" />
<Path IsVisible="{TemplateBinding IsDropDownOpen}"
Data="{StaticResource UpGeometry}"
VerticalAlignment="Center"
HorizontalAlignment="Right"
Width="14"
Stretch="Uniform"
Fill="{Binding BorderBrush, ElementName=border}"
Margin="{TemplateBinding Padding, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0'}" />
</Panel>
<Popup Grid.Column="0" <Popup Grid.Column="0"
Name="PART_Popup" Name="PART_Popup"
WindowManagerAddShadowHint="False" WindowManagerAddShadowHint="False"