DoubleToCornerRadiusConverter.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. using Avalonia;
  2. using CommunityToolkit.Mvvm.ComponentModel;
  3. namespace InABox.Avalonia.Converters;
  4. public partial class DoubleToCornerRadiusConverter : AbstractConverter<double?,CornerRadius>
  5. {
  6. [ObservableProperty]
  7. private double _ratio;
  8. protected override CornerRadius Convert(double? value, object? parameter = null)
  9. {
  10. return value.HasValue
  11. ? new CornerRadius(value.Value * Ratio)
  12. : parameter is CornerRadius param
  13. ? new CornerRadius(param.TopLeft * Ratio, param.TopRight * Ratio, param.BottomRight * Ratio, param.BottomLeft * Ratio)
  14. : new CornerRadius();
  15. }
  16. }
  17. public partial class DoubleToThicknessConverter : AbstractConverter<double?,Thickness>
  18. {
  19. [ObservableProperty]
  20. private double _ratio;
  21. protected override Thickness Convert(double? value, object? parameter = null)
  22. {
  23. return value.HasValue
  24. ? new Thickness(value.Value * Ratio)
  25. : parameter is Thickness param
  26. ? new Thickness(param.Left * Ratio, param.Top * Ratio, param.Right * Ratio, param.Bottom * Ratio)
  27. : new Thickness();
  28. }
  29. }