Skip to content

Commit d5243ad

Browse files
committed
Add Radio Button Style
1 parent 0de2310 commit d5243ad

File tree

1 file changed

+141
-0
lines changed

1 file changed

+141
-0
lines changed

Flow.Launcher/Resources/CustomControlTemplate.xaml

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,147 @@
44
xmlns:system="clr-namespace:System;assembly=mscorlib"
55
xmlns:ui="http://schemas.modernwpf.com/2019">
66

7+
<!-- Radio Button -->
8+
<Style x:Key="DefaultRadioButtonStyle" TargetType="RadioButton">
9+
<Setter Property="OverridesDefaultStyle" Value="True" />
10+
<Setter Property="Background" Value="{DynamicResource RadioButtonBackground}" />
11+
<Setter Property="Foreground" Value="{DynamicResource RadioButtonForeground}" />
12+
<Setter Property="BorderBrush" Value="{DynamicResource RadioButtonBorderBrush}" />
13+
<Setter Property="Padding" Value="8,6,0,0" />
14+
<Setter Property="HorizontalAlignment" Value="Left" />
15+
<Setter Property="VerticalAlignment" Value="Center" />
16+
<Setter Property="HorizontalContentAlignment" Value="Left" />
17+
<Setter Property="VerticalContentAlignment" Value="Top" />
18+
<Setter Property="FontFamily" Value="{DynamicResource ContentControlThemeFontFamily}" />
19+
<Setter Property="FontSize" Value="{DynamicResource ControlContentThemeFontSize}" />
20+
<Setter Property="MinWidth" Value="120" />
21+
<Setter Property="FocusVisualStyle" Value="{DynamicResource {x:Static SystemParameters.FocusVisualStyleKey}}" />
22+
<Setter Property="ui:FocusVisualHelper.UseSystemFocusVisuals" Value="{DynamicResource UseSystemFocusVisuals}" />
23+
<Setter Property="ui:FocusVisualHelper.FocusVisualMargin" Value="-7,-3,-7,-3" />
24+
<Setter Property="Stylus.IsPressAndHoldEnabled" Value="False" />
25+
<Setter Property="Template">
26+
<Setter.Value>
27+
<ControlTemplate TargetType="RadioButton">
28+
<Border
29+
x:Name="RootGrid"
30+
Background="{TemplateBinding Background}"
31+
BorderBrush="{TemplateBinding BorderBrush}"
32+
BorderThickness="{TemplateBinding BorderThickness}"
33+
CornerRadius="{TemplateBinding ui:ControlHelper.CornerRadius}"
34+
SnapsToDevicePixels="True">
35+
<Grid>
36+
<Grid.ColumnDefinitions>
37+
<ColumnDefinition Width="20" />
38+
<ColumnDefinition Width="*" />
39+
</Grid.ColumnDefinitions>
40+
<Grid Height="32" VerticalAlignment="Top">
41+
<Ellipse
42+
x:Name="OuterEllipse"
43+
Width="20"
44+
Height="20"
45+
Fill="#ededed"
46+
Stroke="#858585"
47+
StrokeThickness="{DynamicResource RadioButtonBorderThemeThickness}"
48+
UseLayoutRounding="False" />
49+
<Ellipse
50+
x:Name="CheckOuterEllipse"
51+
Width="20"
52+
Height="20"
53+
Fill="{DynamicResource RadioButtonOuterEllipseCheckedFill}"
54+
Opacity="0"
55+
Stroke="{DynamicResource RadioButtonOuterEllipseCheckedStroke}"
56+
StrokeThickness="{DynamicResource RadioButtonBorderThemeThickness}"
57+
UseLayoutRounding="False" />
58+
<Ellipse
59+
x:Name="CheckGlyph"
60+
Width="12"
61+
Height="12"
62+
Fill="{DynamicResource RadioButtonCheckGlyphFill}"
63+
Opacity="0"
64+
Stroke="{DynamicResource RadioButtonCheckGlyphStroke}"
65+
UseLayoutRounding="False" />
66+
</Grid>
67+
<ui:ContentPresenterEx
68+
x:Name="ContentPresenter"
69+
Grid.Column="1"
70+
Margin="{TemplateBinding Padding}"
71+
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
72+
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
73+
Focusable="False"
74+
RecognizesAccessKey="True"
75+
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
76+
TextElement.Foreground="{TemplateBinding Foreground}"
77+
TextWrapping="Wrap" />
78+
</Grid>
79+
<VisualStateManager.VisualStateGroups>
80+
<VisualStateGroup x:Name="CheckStates">
81+
<VisualState x:Name="Checked">
82+
<Storyboard>
83+
<DoubleAnimation
84+
Storyboard.TargetName="CheckGlyph"
85+
Storyboard.TargetProperty="Opacity"
86+
To="1"
87+
Duration="0" />
88+
<DoubleAnimation
89+
Storyboard.TargetName="OuterEllipse"
90+
Storyboard.TargetProperty="Opacity"
91+
To="0"
92+
Duration="0" />
93+
<DoubleAnimation
94+
Storyboard.TargetName="CheckOuterEllipse"
95+
Storyboard.TargetProperty="Opacity"
96+
To="1"
97+
Duration="0" />
98+
</Storyboard>
99+
</VisualState>
100+
<VisualState x:Name="Unchecked" />
101+
<VisualState x:Name="Indeterminate" />
102+
</VisualStateGroup>
103+
</VisualStateManager.VisualStateGroups>
104+
</Border>
105+
<ControlTemplate.Triggers>
106+
<Trigger Property="IsMouseOver" Value="True">
107+
<Setter TargetName="ContentPresenter" Property="Foreground" Value="{DynamicResource RadioButtonForegroundPointerOver}" />
108+
<Setter TargetName="RootGrid" Property="Background" Value="{DynamicResource RadioButtonBackgroundPointerOver}" />
109+
<Setter TargetName="RootGrid" Property="BorderBrush" Value="{DynamicResource RadioButtonBorderBrushPointerOver}" />
110+
<Setter TargetName="OuterEllipse" Property="Stroke" Value="#858585" />
111+
<Setter TargetName="OuterEllipse" Property="Fill" Value="#e5e5e5" />
112+
<Setter TargetName="CheckOuterEllipse" Property="Stroke" Value="{DynamicResource RadioButtonOuterEllipseCheckedStrokePointerOver}" />
113+
<Setter TargetName="CheckOuterEllipse" Property="Fill" Value="{DynamicResource RadioButtonOuterEllipseCheckedFillPointerOver}" />
114+
<Setter TargetName="CheckGlyph" Property="Fill" Value="{DynamicResource RadioButtonCheckGlyphFillPointerOver}" />
115+
<Setter TargetName="CheckGlyph" Property="Stroke" Value="{DynamicResource RadioButtonCheckGlyphStrokePointerOver}" />
116+
</Trigger>
117+
<Trigger Property="IsPressed" Value="True">
118+
<Setter TargetName="ContentPresenter" Property="Foreground" Value="{DynamicResource RadioButtonForegroundPressed}" />
119+
<Setter TargetName="RootGrid" Property="Background" Value="{DynamicResource RadioButtonBackgroundPressed}" />
120+
<Setter TargetName="RootGrid" Property="BorderBrush" Value="{DynamicResource RadioButtonBorderBrushPressed}" />
121+
<Setter TargetName="OuterEllipse" Property="Stroke" Value="#b4b4b4" />
122+
<Setter TargetName="OuterEllipse" Property="Fill" Value="#dcdcdc" />
123+
<Setter TargetName="CheckOuterEllipse" Property="Stroke" Value="{DynamicResource RadioButtonOuterEllipseCheckedStrokePressed}" />
124+
<Setter TargetName="CheckOuterEllipse" Property="Fill" Value="{DynamicResource RadioButtonOuterEllipseCheckedFillPressed}" />
125+
<Setter TargetName="CheckGlyph" Property="Fill" Value="{DynamicResource RadioButtonCheckGlyphFillPressed}" />
126+
<Setter TargetName="CheckGlyph" Property="Opacity" Value="1" />
127+
<Setter TargetName="CheckGlyph" Property="Stroke" Value="{DynamicResource RadioButtonCheckGlyphStrokePressed}" />
128+
</Trigger>
129+
<Trigger Property="IsEnabled" Value="False">
130+
<Setter TargetName="ContentPresenter" Property="Foreground" Value="{DynamicResource RadioButtonForegroundDisabled}" />
131+
<Setter TargetName="RootGrid" Property="Background" Value="{DynamicResource RadioButtonBackgroundDisabled}" />
132+
<Setter TargetName="RootGrid" Property="BorderBrush" Value="{DynamicResource RadioButtonBorderBrushDisabled}" />
133+
<Setter TargetName="OuterEllipse" Property="Stroke" Value="{DynamicResource RadioButtonOuterEllipseStrokeDisabled}" />
134+
<Setter TargetName="OuterEllipse" Property="Fill" Value="{DynamicResource RadioButtonOuterEllipseFillDisabled}" />
135+
<Setter TargetName="CheckOuterEllipse" Property="Stroke" Value="{DynamicResource RadioButtonOuterEllipseCheckedStrokeDisabled}" />
136+
<Setter TargetName="CheckOuterEllipse" Property="Fill" Value="{DynamicResource RadioButtonOuterEllipseCheckedFillDisabled}" />
137+
<Setter TargetName="CheckGlyph" Property="Fill" Value="{DynamicResource RadioButtonCheckGlyphFillDisabled}" />
138+
<Setter TargetName="CheckGlyph" Property="Stroke" Value="{DynamicResource RadioButtonCheckGlyphStrokeDisabled}" />
139+
</Trigger>
140+
</ControlTemplate.Triggers>
141+
</ControlTemplate>
142+
</Setter.Value>
143+
</Setter>
144+
</Style>
145+
146+
<Style BasedOn="{StaticResource DefaultRadioButtonStyle}" TargetType="RadioButton" />
147+
7148
<!-- CheckBox -->
8149
<ui:CornerRadiusFilterConverter x:Key="TopLeftCornerRadiusDoubleValueConverter" Filter="TopLeftValue" />
9150
<ui:CornerRadiusFilterConverter x:Key="BottomRightCornerRadiusDoubleValueConverter" Filter="BottomRightValue" />

0 commit comments

Comments
 (0)