Skip to content

Commit 6a325a0

Browse files
committed
added hovering halo for radioButton and constant (InteractionHoverOpacity) for hover opacity
1 parent c9f8087 commit 6a325a0

File tree

3 files changed

+30
-9
lines changed

3 files changed

+30
-9
lines changed

src/MaterialDesignThemes.Wpf/Constants.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,5 @@ public static class Constants
1313
public static readonly Thickness DefaultOutlinedBorderActiveThickness = new(2);
1414
public const double TextBoxNotEnabledOpacity = 0.56;
1515
public const double ComboBoxArrowSize = 8;
16+
public const double InteractionHoverOpacity = 0.15;
1617
}

src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.CheckBox.xaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@
187187
<Setter TargetName="contentPresenter" Property="Control.Foreground" Value="{DynamicResource MaterialDesign.Brush.ValidationError}" />
188188
</Trigger>
189189
<Trigger SourceName="IconHost" Property="IsMouseOver" Value="True">
190-
<Setter TargetName="halo" Property="Opacity" Value="0.15" />
190+
<Setter TargetName="halo" Property="Opacity" Value="{x:Static wpf:Constants.InteractionHoverOpacity}" />
191191
</Trigger>
192192
</ControlTemplate.Triggers>
193193
</ControlTemplate>

src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.RadioButton.xaml

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
22
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
3-
xmlns:system="clr-namespace:System;assembly=mscorlib"
43
xmlns:converters="clr-namespace:MaterialDesignThemes.Wpf.Converters"
4+
xmlns:system="clr-namespace:System;assembly=mscorlib"
55
xmlns:wpf="clr-namespace:MaterialDesignThemes.Wpf">
66
<ResourceDictionary.MergedDictionaries>
77
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.ValidationErrorTemplate.xaml" />
@@ -39,6 +39,7 @@
3939
<Setter Property="Background" Value="{DynamicResource MaterialDesign.Brush.Primary}" />
4040
<Setter Property="BorderBrush" Value="{DynamicResource MaterialDesign.Brush.Primary}" />
4141
<Setter Property="BorderThickness" Value="1" />
42+
<Setter Property="Cursor" Value="Hand" />
4243
<Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}" />
4344
<Setter Property="Foreground" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type FrameworkElement}}, Path=(TextElement.Foreground), FallbackValue=Black}" />
4445
<Setter Property="Template">
@@ -75,20 +76,23 @@
7576
<ColumnDefinition Width="Auto" />
7677
<ColumnDefinition Width="*" />
7778
</Grid.ColumnDefinitions>
78-
<Viewbox Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:RadioButtonAssist.RadioButtonSize)}"
79-
Height="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:RadioButtonAssist.RadioButtonSize)}"
80-
VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
81-
<Canvas Width="24" Height="24">
79+
<Viewbox x:Name="IconHost"
80+
Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:RadioButtonAssist.RadioButtonSize)}"
81+
Height="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:RadioButtonAssist.RadioButtonSize)}"
82+
VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
83+
<Canvas Width="24"
84+
Height="24"
85+
Background="Transparent">
8286
<Path x:Name="Graphic"
8387
Data="M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"
8488
Fill="{DynamicResource MaterialDesign.Brush.RadioButton.Outline}" />
8589
<Ellipse x:Name="InteractionEllipse"
8690
Canvas.Left="12"
8791
Canvas.Top="12"
88-
IsHitTestVisible="False"
8992
Width="0"
9093
Height="0"
9194
Fill="{TemplateBinding Foreground}"
95+
IsHitTestVisible="False"
9296
Opacity="0"
9397
RenderTransformOrigin="0.5,0.5">
9498
<Ellipse.RenderTransform>
@@ -102,6 +106,19 @@
102106
</Ellipse>
103107
</Canvas>
104108
</Viewbox>
109+
110+
<!-- halo shown when hovering -->
111+
<Ellipse x:Name="halo"
112+
Grid.Column="0"
113+
Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:RadioButtonAssist.RadioButtonSize), Converter={x:Static converters:MathConverter.MultiplyInstance}, ConverterParameter=1.6}"
114+
Height="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:RadioButtonAssist.RadioButtonSize), Converter={x:Static converters:MathConverter.MultiplyInstance}, ConverterParameter=1.6}"
115+
HorizontalAlignment="Center"
116+
VerticalAlignment="Center"
117+
Fill="{TemplateBinding Foreground}"
118+
IsHitTestVisible="False"
119+
Opacity="0"
120+
RenderTransformOrigin="0.5,0.5" />
121+
105122
<ContentPresenter x:Name="contentPresenter"
106123
Grid.Column="1"
107124
Margin="{TemplateBinding Padding}"
@@ -117,7 +134,7 @@
117134
</EventTrigger>
118135
<Trigger Property="HasContent" Value="true">
119136
<Setter Property="FocusVisualStyle" Value="{StaticResource OptionMarkFocusVisual}" />
120-
<Setter Property="Padding" Value="4,2,0,0" />
137+
<Setter Property="Padding" Value="0,2,0,0" />
121138
</Trigger>
122139
<Trigger Property="IsEnabled" Value="false">
123140
<Setter Property="Opacity" Value="0.26" />
@@ -136,6 +153,9 @@
136153
<Setter TargetName="Graphic" Property="Fill" Value="{DynamicResource MaterialDesign.Brush.ValidationError}" />
137154
<Setter TargetName="contentPresenter" Property="Control.Foreground" Value="{DynamicResource MaterialDesign.Brush.ValidationError}" />
138155
</Trigger>
156+
<Trigger SourceName="IconHost" Property="IsMouseOver" Value="True">
157+
<Setter TargetName="halo" Property="Opacity" Value="{x:Static wpf:Constants.InteractionHoverOpacity}" />
158+
</Trigger>
139159
</ControlTemplate.Triggers>
140160
</ControlTemplate>
141161
</Setter.Value>
@@ -213,10 +233,10 @@
213233
<Ellipse x:Name="InteractionEllipse"
214234
Canvas.Left="12"
215235
Canvas.Top="12"
216-
IsHitTestVisible="False"
217236
Width="0"
218237
Height="0"
219238
Fill="{TemplateBinding Foreground}"
239+
IsHitTestVisible="False"
220240
Opacity="0"
221241
RenderTransformOrigin="0.5,0.5">
222242
<Ellipse.RenderTransform>

0 commit comments

Comments
 (0)