Skip to content

Commit 9122671

Browse files
committed
chore: add avalonia CheckBox demo.
1 parent 00d64d5 commit 9122671

File tree

10 files changed

+239
-82
lines changed

10 files changed

+239
-82
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<UserControl xmlns="https://github.com/avaloniaui"
2+
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
3+
x:Class="HandyControlDemo.UserControl.CheckBoxDemoCtl">
4+
<StackPanel Margin="32"
5+
HorizontalAlignment="Center"
6+
VerticalAlignment="Center">
7+
<CheckBox Content="CheckBox"
8+
IsChecked="True" />
9+
<CheckBox Margin="0,16,0,0"
10+
Content="CheckBox"
11+
IsChecked="True"
12+
IsEnabled="False" />
13+
<CheckBox Margin="0,16,0,0"
14+
Content="CheckBox" />
15+
<CheckBox Margin="0,16,0,0"
16+
Content="CheckBox"
17+
IsEnabled="False" />
18+
<CheckBox Margin="0,16,0,0"
19+
Content="CheckBox"
20+
IsChecked="{x:Null}" />
21+
<CheckBox Margin="0,16,0,0"
22+
Content="CheckBox"
23+
IsChecked="{x:Null}"
24+
IsEnabled="False" />
25+
</StackPanel>
26+
</UserControl>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace HandyControlDemo.UserControl;
2+
3+
public partial class CheckBoxDemoCtl : Avalonia.Controls.UserControl
4+
{
5+
public CheckBoxDemoCtl()
6+
{
7+
InitializeComponent();
8+
}
9+
}
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
<ResourceDictionary xmlns="https://github.com/avaloniaui"
2+
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
3+
<ControlTheme x:Key="CheckBoxBaseStyle"
4+
TargetType="CheckBox">
5+
<Setter Property="Foreground"
6+
Value="{DynamicResource PrimaryTextBrush}" />
7+
<Setter Property="Background"
8+
Value="White" />
9+
<Setter Property="BorderBrush"
10+
Value="{DynamicResource BorderBrush}" />
11+
<Setter Property="BorderThickness"
12+
Value="1" />
13+
<Setter Property="HorizontalAlignment"
14+
Value="Stretch" />
15+
<Setter Property="VerticalAlignment"
16+
Value="Center" />
17+
<Setter Property="VerticalContentAlignment"
18+
Value="Center" />
19+
<Setter Property="Padding"
20+
Value="6,0,0,0" />
21+
<Setter Property="Template">
22+
<ControlTemplate>
23+
<Grid Background="Transparent"
24+
ColumnDefinitions="Auto, *">
25+
<Border Height="16"
26+
Width="16"
27+
Background="{TemplateBinding Background}"
28+
BorderBrush="{TemplateBinding BorderBrush}"
29+
BorderThickness="{TemplateBinding BorderThickness}"
30+
CornerRadius="2" />
31+
<Panel Grid.Column="0"
32+
Height="16"
33+
Width="16">
34+
<Path FlowDirection="LeftToRight"
35+
StrokeDashOffset="8"
36+
StrokeDashArray="8,8"
37+
Width="10"
38+
Height="8"
39+
Data="{StaticResource CheckedGeometry}"
40+
StrokeThickness="2"
41+
Stretch="Uniform"
42+
Stroke="{DynamicResource TextIconBrush}"
43+
VerticalAlignment="Center"
44+
HorizontalAlignment="Center"
45+
x:Name="path">
46+
<Path.Transitions>
47+
<Transitions>
48+
<DoubleTransition Property="StrokeDashOffset"
49+
Duration="0:0:0.2" />
50+
</Transitions>
51+
</Path.Transitions>
52+
</Path>
53+
<Rectangle RadiusX="2"
54+
RadiusY="2"
55+
Width="12"
56+
Height="12"
57+
Fill="{DynamicResource PrimaryBrush}"
58+
IsVisible="{Binding IsChecked, RelativeSource={RelativeSource TemplatedParent}, Converter={x:Static ObjectConverters.IsNull}}"
59+
Margin="2"
60+
Opacity="1"
61+
x:Name="indeterminateMark" />
62+
</Panel>
63+
<ContentPresenter x:Name="contentPresenter"
64+
IsVisible="{Binding $self.Content, Converter={x:Static ObjectConverters.IsNotNull}}"
65+
Grid.Column="1"
66+
Focusable="False"
67+
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
68+
Margin="{TemplateBinding Padding}"
69+
RecognizesAccessKey="True"
70+
VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
71+
</Grid>
72+
</ControlTemplate>
73+
</Setter>
74+
75+
<Style Selector="^:pointerover">
76+
<Setter Property="BorderBrush"
77+
Value="{DynamicResource SecondaryBorderBrush}" />
78+
</Style>
79+
80+
<Style Selector="^:checked">
81+
<Setter Property="Background"
82+
Value="{DynamicResource PrimaryBrush}" />
83+
<Setter Property="BorderBrush"
84+
Value="{DynamicResource DarkPrimaryBrush}" />
85+
86+
<Style Selector="^ /template/ Path#path">
87+
<Setter Property="StrokeDashOffset"
88+
Value="0" />
89+
</Style>
90+
</Style>
91+
92+
<Style Selector="^:unchecked">
93+
<Style Selector="^ /template/ Path#path">
94+
<Setter Property="Stroke"
95+
Value="{DynamicResource BorderBrush}" />
96+
<Setter Property="StrokeDashOffset"
97+
Value="8" />
98+
</Style>
99+
</Style>
100+
101+
<Style Selector="^:pressed">
102+
<Style Selector="^:checked">
103+
<Setter Property="Opacity"
104+
Value=".8" />
105+
</Style>
106+
<Style Selector="^:unchecked">
107+
<Setter Property="BorderBrush"
108+
Value="{DynamicResource PrimaryBrush}" />
109+
</Style>
110+
</Style>
111+
112+
<Style Selector="^:disabled">
113+
<Setter Property="Opacity"
114+
Value="0.4" />
115+
</Style>
116+
</ControlTheme>
117+
118+
<ControlTheme x:Key="{x:Type CheckBox}"
119+
BasedOn="{StaticResource CheckBoxBaseStyle}"
120+
TargetType="CheckBox" />
121+
</ResourceDictionary>

src/Avalonia/HandyControl_Avalonia/Themes/Styles/RadioButton.axaml

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -70,30 +70,32 @@
7070
Value="{DynamicResource SecondaryBorderBrush}" />
7171
</Style>
7272

73-
<Style Selector="^:pressed:checked">
74-
<Setter Property="Opacity"
75-
Value=".8" />
76-
</Style>
77-
78-
<Style Selector="^:pressed:unchecked">
79-
<Setter Property="BorderBrush"
80-
Value="{DynamicResource PrimaryBrush}" />
73+
<Style Selector="^:pressed">
74+
<Style Selector="^:checked">
75+
<Setter Property="Opacity"
76+
Value=".8" />
77+
</Style>
78+
<Style Selector="^:unchecked">
79+
<Setter Property="BorderBrush"
80+
Value="{DynamicResource PrimaryBrush}" />
81+
</Style>
8182
</Style>
8283

8384
<Style Selector="^:disabled">
8485
<Setter Property="Opacity"
8586
Value="0.4" />
8687
</Style>
88+
8789
<Style Selector="^:checked">
8890
<Setter Property="Background"
8991
Value="{DynamicResource PrimaryBrush}" />
9092
<Setter Property="BorderBrush"
9193
Value="{DynamicResource DarkPrimaryBrush}" />
92-
</Style>
9394

94-
<Style Selector="^:checked /template/ Ellipse">
95-
<Setter Property="RenderTransform"
96-
Value="scale(1)" />
95+
<Style Selector="^ /template/ Ellipse">
96+
<Setter Property="RenderTransform"
97+
Value="scale(1)" />
98+
</Style>
9799
</Style>
98100
</ControlTheme>
99101

src/Avalonia/HandyControl_Avalonia/Themes/Styles/Style.axaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
<MergeResourceInclude Source="avares://HandyControl/Themes/Styles/RepeatButton.axaml" />
1818
<MergeResourceInclude Source="avares://HandyControl/Themes/Styles/ToggleButton.axaml" />
1919
<MergeResourceInclude Source="avares://HandyControl/Themes/Styles/RadioButton.axaml" />
20+
<MergeResourceInclude Source="avares://HandyControl/Themes/Styles/CheckBox.axaml" />
2021
<MergeResourceInclude Source="avares://HandyControl/Themes/Styles/Border.axaml" />
2122
<MergeResourceInclude Source="avares://HandyControl/Themes/Styles/ItemsControl.axaml" />
2223
<MergeResourceInclude Source="avares://HandyControl/Themes/Styles/TabItem.axaml" />

src/Avalonia/HandyControl_Avalonia/Themes/Styles/TabItem.axaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,11 @@
4646
<Style Selector="^:selected">
4747
<Setter Property="Foreground"
4848
Value="{DynamicResource PrimaryBrush}" />
49-
</Style>
5049

51-
<Style Selector="^:selected /template/ Border#mainBorder">
52-
<Setter Property="BorderThickness"
53-
Value="0,0,0,2" />
50+
<Style Selector="^ /template/ Border#mainBorder">
51+
<Setter Property="BorderThickness"
52+
Value="0,0,0,2" />
53+
</Style>
5454
</Style>
5555
</ControlTheme>
5656
</ResourceDictionary>

src/Avalonia/HandyControl_Avalonia/Themes/Styles/ToggleButton.axaml

Lines changed: 60 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -585,34 +585,34 @@
585585
</ControlTemplate>
586586
</Setter>
587587

588-
<Style Selector="^:checked /template/ Border#thumb">
589-
<Setter Property="RenderTransform"
590-
Value="translateX(32px)" />
588+
<Style Selector="^:checked">
589+
<Style Selector="^ /template/ Border#thumb">
590+
<Setter Property="RenderTransform"
591+
Value="translateX(32px)" />
592+
</Style>
593+
<Style Selector="^ /template/ Border#lightBorder">
594+
<Setter Property="Opacity"
595+
Value="1" />
596+
</Style>
597+
<Style Selector="^ /template/ Border#innerBorder">
598+
<Setter Property="Opacity"
599+
Value="0" />
600+
</Style>
591601
</Style>
592602

593-
<Style Selector="^:unchecked /template/ Border#thumb">
594-
<Setter Property="RenderTransform"
595-
Value="translateX(0px)" />
596-
</Style>
597-
598-
<Style Selector="^:checked /template/ Border#lightBorder">
599-
<Setter Property="Opacity"
600-
Value="1" />
601-
</Style>
602-
603-
<Style Selector="^:unchecked /template/ Border#lightBorder">
604-
<Setter Property="Opacity"
605-
Value="0" />
606-
</Style>
607-
608-
<Style Selector="^:checked /template/ Border#innerBorder">
609-
<Setter Property="Opacity"
610-
Value="0" />
611-
</Style>
612-
613-
<Style Selector="^:unchecked /template/ Border#innerBorder">
614-
<Setter Property="Opacity"
615-
Value="1" />
603+
<Style Selector="^:unchecked">
604+
<Style Selector="^ /template/ Border#thumb">
605+
<Setter Property="RenderTransform"
606+
Value="translateX(0px)" />
607+
</Style>
608+
<Style Selector="^ /template/ Border#lightBorder">
609+
<Setter Property="Opacity"
610+
Value="0" />
611+
</Style>
612+
<Style Selector="^ /template/ Border#innerBorder">
613+
<Setter Property="Opacity"
614+
Value="1" />
615+
</Style>
616616
</Style>
617617

618618
<Style Selector="^:disabled">
@@ -703,44 +703,42 @@
703703
</ControlTemplate>
704704
</Setter>
705705

706-
<Style Selector="^:checked /template/ Border#unCheckedElement">
707-
<Setter Property="RenderTransform"
708-
Value="scaleX(0)" />
709-
</Style>
710-
711-
<Style Selector="^:checked /template/ Border#checkedElement">
712-
<Setter Property="RenderTransform"
713-
Value="scaleX(1)" />
706+
<Style Selector="^:checked">
707+
<Style Selector="^ /template/ Border#unCheckedElement">
708+
<Setter Property="RenderTransform"
709+
Value="scaleX(0)" />
710+
</Style>
711+
<Style Selector="^ /template/ Border#checkedElement">
712+
<Setter Property="RenderTransform"
713+
Value="scaleX(1)" />
714+
</Style>
715+
<Style Selector="^ /template/ Border#unCheckedElement">
716+
<Setter Property="Opacity"
717+
Value="0" />
718+
</Style>
719+
<Style Selector="^ /template/ Border#checkedElement">
720+
<Setter Property="Opacity"
721+
Value="1" />
722+
</Style>
714723
</Style>
715724

716-
<Style Selector="^:unchecked /template/ Border#unCheckedElement">
717-
<Setter Property="RenderTransform"
718-
Value="scaleX(1)" />
719-
</Style>
720-
721-
<Style Selector="^:unchecked /template/ Border#checkedElement">
722-
<Setter Property="RenderTransform"
723-
Value="scaleX(0)" />
724-
</Style>
725-
726-
<Style Selector="^:checked /template/ Border#unCheckedElement">
727-
<Setter Property="Opacity"
728-
Value="0" />
729-
</Style>
730-
731-
<Style Selector="^:checked /template/ Border#checkedElement">
732-
<Setter Property="Opacity"
733-
Value="1" />
734-
</Style>
735-
736-
<Style Selector="^:unchecked /template/ Border#unCheckedElement">
737-
<Setter Property="Opacity"
738-
Value="1" />
739-
</Style>
740-
741-
<Style Selector="^:unchecked /template/ Border#checkedElement">
742-
<Setter Property="Opacity"
743-
Value="0" />
725+
<Style Selector="^:unchecked">
726+
<Style Selector="^ /template/ Border#unCheckedElement">
727+
<Setter Property="RenderTransform"
728+
Value="scaleX(1)" />
729+
</Style>
730+
<Style Selector="^ /template/ Border#checkedElement">
731+
<Setter Property="RenderTransform"
732+
Value="scaleX(0)" />
733+
</Style>
734+
<Style Selector="^ /template/ Border#unCheckedElement">
735+
<Setter Property="Opacity"
736+
Value="1" />
737+
</Style>
738+
<Style Selector="^ /template/ Border#checkedElement">
739+
<Setter Property="Opacity"
740+
Value="0" />
741+
</Style>
744742
</Style>
745743

746744
<Style Selector="^:pointerover">

src/Net_40/HandyControl_Net_40/Themes/Theme.xaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3470,7 +3470,7 @@
34703470
<Setter Property="Padding" Value="6,1" />
34713471
<Setter Property="hc:IconElement.Height" Value="12" />
34723472
</Style>
3473-
<Style x:Key="{x:Type ToggleButton}" BasedOn="{StaticResource ToggleButtonDefault}" TargetType="ToggleButton" />
3473+
<Style BasedOn="{StaticResource ToggleButtonDefault}" TargetType="ToggleButton" />
34743474
<Style x:Key="ToggleButtonPrimary" BasedOn="{StaticResource ToggleButtonBaseStyle}" TargetType="ToggleButton">
34753475
<Setter Property="Background" Value="{DynamicResource PrimaryBrush}" />
34763476
<Setter Property="BorderBrush" Value="{DynamicResource PrimaryBrush}" />

src/Shared/HandyControl_Shared/Themes/Styles/ToggleButton.xaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
<Setter Property="hc:IconElement.Height" Value="12"/>
2323
</Style>
2424

25-
<Style x:Key="{x:Type ToggleButton}" BasedOn="{StaticResource ToggleButtonDefault}" TargetType="ToggleButton"/>
25+
<Style BasedOn="{StaticResource ToggleButtonDefault}" TargetType="ToggleButton"/>
2626

2727
<Style x:Key="ToggleButtonPrimary" BasedOn="{StaticResource ToggleButtonBaseStyle}" TargetType="ToggleButton">
2828
<Setter Property="Background" Value="{DynamicResource PrimaryBrush}"/>

0 commit comments

Comments
 (0)