Skip to content

Commit d06ef32

Browse files
committed
Add pattern matching
1 parent 5f4fd2c commit d06ef32

14 files changed

+66
-87
lines changed

src/MaterialDesignThemes.Wpf/Converters/FloatingHintClippingGridConverter.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,7 @@ public class FloatingHintClippingGridConverter : IMultiValueConverter
88
{
99
public object? Convert(object?[] values, Type targetType, object? parameter, CultureInfo culture)
1010
{
11-
if (values is not [double actualWidth, double actualHeight, double floatingScale])
12-
{
13-
return null;
14-
}
11+
if (values is not [double actualWidth, double actualHeight, double floatingScale]) return null;
1512

1613
RectangleGeometry geometry = new(new Rect(new Point(0, 0), new Size(actualWidth, actualHeight * 2 * floatingScale)));
1714
geometry.Freeze();

src/MaterialDesignThemes.Wpf/Converters/FloatingHintContainerMarginConverter.cs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,15 @@ public class FloatingHintContainerMarginConverter : IMultiValueConverter
99

1010
public object? Convert(object?[]? values, Type targetType, object? parameter, CultureInfo culture)
1111
{
12-
if (values is [double scale, Thickness floatingMargin, double floatingScale])
12+
if (values is not [double scale, Thickness floatingMargin, double floatingScale]) return EmptyThickness;
13+
14+
return floatingMargin with
1315
{
14-
return floatingMargin with
15-
{
16-
Left = (floatingMargin.Left * scale) / floatingScale,
17-
Top = (floatingMargin.Top * scale) / floatingScale,
18-
Right = (floatingMargin.Right * scale) / floatingScale,
19-
Bottom = (floatingMargin.Bottom * scale) / floatingScale
20-
};
21-
}
22-
return EmptyThickness;
16+
Left = (floatingMargin.Left * scale) / floatingScale,
17+
Top = (floatingMargin.Top * scale) / floatingScale,
18+
Right = (floatingMargin.Right * scale) / floatingScale,
19+
Bottom = (floatingMargin.Bottom * scale) / floatingScale
20+
};
2321
}
2422

2523
public object[]? ConvertBack(object? value, Type[] targetTypes, object? parameter, CultureInfo culture)

src/MaterialDesignThemes.Wpf/Converters/FloatingHintInitialHorizontalOffsetConverter.cs

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,24 @@ public class FloatingHintInitialHorizontalOffsetConverter : IMultiValueConverter
77
{
88
public object? Convert(object?[]? values, Type targetType, object? parameter, CultureInfo culture)
99
{
10-
if (values is [double prefixWidth, Thickness prefixMargin, double suffixWidth, Thickness suffixMargin, PrefixSuffixVisibility prefixVisibility, PrefixSuffixVisibility suffixVisibility, PrefixSuffixHintBehavior prefixHintBehavior, PrefixSuffixHintBehavior suffixHintBehavior, HorizontalAlignment horizontalContentAlignment])
10+
if (values is not
11+
[ double prefixWidth,
12+
Thickness prefixMargin,
13+
double suffixWidth,
14+
Thickness suffixMargin,
15+
PrefixSuffixVisibility prefixVisibility,
16+
PrefixSuffixVisibility suffixVisibility,
17+
PrefixSuffixHintBehavior prefixHintBehavior,
18+
PrefixSuffixHintBehavior suffixHintBehavior,
19+
HorizontalAlignment horizontalContentAlignment
20+
]) return 0;
21+
22+
return horizontalContentAlignment switch
1123
{
12-
return horizontalContentAlignment switch
13-
{
14-
HorizontalAlignment.Center => 0,
15-
HorizontalAlignment.Right => GetRightOffset(),
16-
_ => GetLeftOffset(),
17-
};
18-
}
19-
return 0;
24+
HorizontalAlignment.Center => 0,
25+
HorizontalAlignment.Right => GetRightOffset(),
26+
_ => GetLeftOffset(),
27+
};
2028

2129
double GetLeftOffset()
2230
{

src/MaterialDesignThemes.Wpf/Converters/FloatingHintInitialVerticalOffsetConverter.cs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,9 @@ public class FloatingHintInitialVerticalOffsetConverter : IMultiValueConverter
77
{
88
public object? Convert(object?[]? values, Type targetType, object? parameter, CultureInfo culture)
99
{
10-
if (values is [double contentHostHeight, double hintHeight])
11-
{
12-
return (contentHostHeight - hintHeight) / 2;
13-
}
14-
return 0;
10+
if (values is not [double contentHostHeight, double hintHeight]) return 0;
11+
12+
return (contentHostHeight - hintHeight) / 2;
1513
}
1614

1715
public object?[] ConvertBack(object? value, Type[] targetTypes, object? parameter, CultureInfo culture)

src/MaterialDesignThemes.Wpf/Converters/FloatingHintMarginConverter.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,7 @@ public class FloatingHintMarginConverter : IMultiValueConverter
2020
Thickness suffixMargin,
2121
PrefixSuffixVisibility prefixVisibility,
2222
PrefixSuffixVisibility suffixVisibility
23-
])
24-
{
25-
return EmptyThickness;
26-
}
23+
]) return EmptyThickness;
2724

2825
double prefixTotalWidth = prefixWidth > 0 ? prefixWidth + prefixMargin.Right : 0;
2926
double suffixTotalWidth = suffixWidth > 0 ? suffixWidth + suffixMargin.Left : 0;

src/MaterialDesignThemes.Wpf/Converters/FloatingHintScaleTransformConverter.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,7 @@ public class FloatingHintScaleTransformConverter : IMultiValueConverter
88
{
99
public object? Convert(object?[]? values, Type targetType, object? parameter, CultureInfo culture)
1010
{
11-
if (values is not [double scale, double lower, double upper])
12-
{
13-
return Transform.Identity;
14-
}
11+
if (values is not [double scale, double lower, double upper]) return Transform.Identity;
1512

1613
double scalePercentage = upper + (lower - upper) * scale;
1714
return new ScaleTransform(scalePercentage, scalePercentage);

src/MaterialDesignThemes.Wpf/Converters/FloatingHintTextBlockMarginConverter.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,14 @@ internal class FloatingHintTextBlockMarginConverter : IMultiValueConverter
1111
if (values is not
1212
[
1313
FloatingHintHorizontalAlignment restingAlignmentOverride,
14-
FloatingHintHorizontalAlignment floatingAlignment, HorizontalAlignment restingAlignment,
15-
double desiredWidth, double availableWidth, double scale, double lower, double upper
16-
])
17-
{
18-
return Transform.Identity;
19-
}
14+
FloatingHintHorizontalAlignment floatingAlignment,
15+
HorizontalAlignment restingAlignment,
16+
double desiredWidth,
17+
double availableWidth,
18+
double scale,
19+
double lower,
20+
double upper
21+
]) return Transform.Identity;
2022

2123
double scaleMultiplier = upper + (lower - upper) * scale;
2224

src/MaterialDesignThemes.Wpf/Converters/FloatingHintTranslateTransformConverter.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,7 @@ public class FloatingHintTranslateTransformConverter : IMultiValueConverter
88
{
99
public object? Convert(object?[]? values, Type targetType, object? parameter, CultureInfo culture)
1010
{
11-
if (values is not [double scale, double lower, double upper, SmartHint hint, Point floatingOffset, ..])
12-
{
13-
return Transform.Identity;
14-
}
11+
if (values is not [double scale, double lower, double upper, SmartHint hint, Point floatingOffset, ..]) return Transform.Identity;
1512

1613
// Back-compatible behavior, fall back to using the non-nullable floatingOffset if it has a non-default value
1714
if (hint.FloatingTarget is null || floatingOffset != HintAssist.DefaultFloatingOffset)

src/MaterialDesignThemes.Wpf/Converters/HorizontalThicknessConverter.cs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,9 @@ internal class HorizontalThicknessConverter : IValueConverter
77
{
88
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
99
{
10-
if (value is Thickness thickness)
11-
{
12-
return new Thickness(thickness.Left, 0, thickness.Right, 0);
13-
}
14-
return Binding.DoNothing;
10+
if (value is not Thickness thickness) return Binding.DoNothing;
11+
12+
return new Thickness(thickness.Left, 0, thickness.Right, 0);
1513
}
1614

1715
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)

src/MaterialDesignThemes.Wpf/Converters/HsbLinearGradientConverter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ public class HsbLinearGradientConverter : IValueConverter
99
{
1010
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
1111
{
12-
var v = (double)value;
12+
if (value is not double hue) return Binding.DoNothing;
1313

14-
return new LinearGradientBrush(Colors.White, new Hsb(v, 1, 1).ToColor(), 0);
14+
return new LinearGradientBrush(Colors.White, new Hsb(hue, 1, 1).ToColor(), 0);
1515
}
1616

1717
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)

0 commit comments

Comments
 (0)