Skip to content

Commit 4cef829

Browse files
committed
With StayOnCenter ripple considers position of inner element
With StayOnCenter ripple considers position of inner element, so togglebutton now have a bubble effect. Also now ripple try adjust rippleSize to Content element first.
1 parent ee3b645 commit 4cef829

File tree

3 files changed

+35
-14
lines changed

3 files changed

+35
-14
lines changed

MaterialDesignThemes.Wpf/Ripple.cs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,20 @@ protected override void OnPreviewMouseLeftButtonDown(MouseButtonEventArgs e)
8181

8282
if (StayOnCenter)
8383
{
84-
RippleX = this.ActualWidth / 2 - RippleSize / 2;
85-
RippleY = this.ActualHeight / 2 - RippleSize / 2;
84+
var innerContent = (Content as FrameworkElement);
85+
86+
if (innerContent != null)
87+
{
88+
Point position = innerContent.TransformToAncestor(this)
89+
.Transform(new Point(0, 0));
90+
RippleX = position.X + innerContent.ActualWidth/ 2 - RippleSize / 2;
91+
RippleY = position.Y + innerContent.ActualHeight / 2 - RippleSize / 2;
92+
}
93+
else
94+
{
95+
RippleX = ActualWidth / 2 - RippleSize / 2;
96+
RippleY = ActualHeight / 2 - RippleSize / 2;
97+
}
8698
}
8799
else
88100
{

MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.RatingBar.xaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
3636
Padding="{TemplateBinding Padding}"
3737
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
38+
RippleSizeMultiplier="0.5"
3839
StayOnCenter="True"
3940
RenderTransformOrigin=".5, .5">
4041
<wpf:Ripple.RenderTransform>

MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.ToggleButton.xaml

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -245,17 +245,23 @@
245245
<Viewbox Width="34">
246246
<Grid>
247247
<Rectangle x:Name="Track" Fill="Black" HorizontalAlignment="Left" Height="15" Margin="4.211,5,4.211,0" Stroke="{x:Null}" VerticalAlignment="Top" Width="40" RadiusY="7.5" RadiusX="7.5" Opacity="0.26"/>
248-
<Ellipse x:Name="Thumb" Fill="#FFFAFAFA" HorizontalAlignment="Left" Height="25" Margin="0,0,0,0" Stroke="{x:Null}" VerticalAlignment="Top" Width="25" RenderTransformOrigin="0.5,0.5" Effect="{DynamicResource MaterialDesignShadowDepth1}">
249-
<Ellipse.RenderTransform>
250-
<TransformGroup>
251-
<ScaleTransform/>
252-
<SkewTransform/>
253-
<RotateTransform/>
254-
<TranslateTransform/>
255-
</TransformGroup>
256-
</Ellipse.RenderTransform>
257-
</Ellipse>
258-
</Grid>
248+
<wpf:Ripple StayOnCenter="True"
249+
ClipToBounds="False"
250+
RippleSizeMultiplier="0.75"
251+
wpf:RippleAssist.ClipToBounds="False"
252+
x:Name="RippleWrapper">
253+
<Ellipse x:Name="Thumb" Fill="#FFFAFAFA" HorizontalAlignment="Left" Height="25" Margin="0,0,0,0" Stroke="{x:Null}" VerticalAlignment="Top" Width="25" RenderTransformOrigin="0.5,0.5" Effect="{DynamicResource MaterialDesignShadowDepth1}">
254+
<Ellipse.RenderTransform>
255+
<TransformGroup>
256+
<ScaleTransform/>
257+
<SkewTransform/>
258+
<RotateTransform/>
259+
<TranslateTransform/>
260+
</TransformGroup>
261+
</Ellipse.RenderTransform>
262+
</Ellipse>
263+
</wpf:Ripple>
264+
</Grid>
259265
</Viewbox>
260266
<ControlTemplate.Triggers>
261267
<Trigger Property="IsChecked" Value="True">
@@ -270,7 +276,9 @@
270276
</Trigger>
271277
<Trigger Property="Button.IsDefaulted" Value="true"/>
272278
<Trigger Property="IsMouseOver" Value="true"/>
273-
<Trigger Property="IsPressed" Value="true"/>
279+
<Trigger Property="IsPressed" Value="true">
280+
<Setter TargetName="RippleWrapper" Property="IsActive" Value="True"/>
281+
</Trigger>
274282
<Trigger Property="IsEnabled" Value="false">
275283
<Setter TargetName="Thumb" Property="Fill" Value="#BDBDBD" />
276284
<Setter TargetName="Track" Property="Fill">

0 commit comments

Comments
 (0)