diff --git a/src/MaterialDesignThemes.Wpf/Converters/EllipseClipConverter.cs b/src/MaterialDesignThemes.Wpf/Converters/EllipseClipConverter.cs new file mode 100644 index 0000000000..d5dbb3b3f0 --- /dev/null +++ b/src/MaterialDesignThemes.Wpf/Converters/EllipseClipConverter.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Data; +using System.Windows.Media; + +namespace MaterialDesignThemes.Wpf.Converters; + +public class EllipseClipConverter : IMultiValueConverter +{ + public static readonly EllipseClipConverter Instance = new(); + + public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) + { + if (values is [double width, double height, ..]) + { + if (width < 1.0 || height < 1.0) + { + return Geometry.Empty; + } + + Point center = new Point(width / 2.0, height / 2.0); + double radiusX = width / 2.0; + double radiusY = height / 2.0; + + EllipseGeometry geometry = new EllipseGeometry(center, radiusX, radiusY); + geometry.Freeze(); + + return geometry; + } + + return DependencyProperty.UnsetValue; + } + + public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) + => throw new NotImplementedException(); +} diff --git a/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.ToggleButton.xaml b/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.ToggleButton.xaml index a683767fc3..52e85b15ca 100644 --- a/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.ToggleButton.xaml +++ b/src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.ToggleButton.xaml @@ -136,20 +136,10 @@ ContentTemplate="{TemplateBinding ContentTemplate}" FlowDirection="LeftToRight" /> - - - - - - - - + + + + @@ -164,20 +154,10 @@ ContentTemplate="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(wpf:ToggleButtonAssist.OnContentTemplate)}" FlowDirection="LeftToRight" /> - - - - - - - - + + + +