Skip to content

Commit

Permalink
chore: complete avalonia button style.
Browse files Browse the repository at this point in the history
  • Loading branch information
NaBian committed Nov 30, 2024
1 parent 8a31a48 commit 2f0b397
Show file tree
Hide file tree
Showing 17 changed files with 1,989 additions and 176 deletions.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
using Avalonia;
using Avalonia.Media;

namespace HandyControl.Controls;

public class BackgroundSwitchElement
{
public static readonly AttachedProperty<IBrush> MouseHoverBackgroundProperty =
AvaloniaProperty.RegisterAttached<BackgroundSwitchElement, AvaloniaObject, IBrush>("MouseHoverBackground",
defaultValue: Brushes.Transparent, inherits: true);

public static void SetMouseHoverBackground(AvaloniaObject element, IBrush value) =>
element.SetValue(MouseHoverBackgroundProperty, value);

public static IBrush GetMouseHoverBackground(AvaloniaObject element) =>
element.GetValue(MouseHoverBackgroundProperty);

public static readonly AttachedProperty<IBrush> MouseDownBackgroundProperty =
AvaloniaProperty.RegisterAttached<BackgroundSwitchElement, AvaloniaObject, IBrush>("MouseDownBackground",
defaultValue: Brushes.Transparent, inherits: true);

public static void SetMouseDownBackground(AvaloniaObject element, IBrush value) =>
element.SetValue(MouseDownBackgroundProperty, value);

public static IBrush GetMouseDownBackground(AvaloniaObject element) =>
element.GetValue(MouseDownBackgroundProperty);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Data;
using HandyControl.Tools.Converter;

namespace HandyControl.Controls;

public class BorderElement
{
public static readonly AttachedProperty<CornerRadius> CornerRadiusProperty =
AvaloniaProperty.RegisterAttached<BorderElement, AvaloniaObject, CornerRadius>("CornerRadius", inherits: true);

public static void SetCornerRadius(AvaloniaObject element, CornerRadius value) =>
element.SetValue(CornerRadiusProperty, value);

public static CornerRadius GetCornerRadius(AvaloniaObject element) => element.GetValue(CornerRadiusProperty);

public static readonly AttachedProperty<bool> CircularProperty =
AvaloniaProperty.RegisterAttached<BorderElement, AvaloniaObject, bool>("Circular");

public static void SetCircular(AvaloniaObject element, bool value) => element.SetValue(CircularProperty, value);

public static bool GetCircular(AvaloniaObject element) => element.GetValue(CircularProperty);

static BorderElement()
{
CircularProperty.Changed.AddClassHandler<AvaloniaObject>(OnCircularChanged);
}

private static void OnCircularChanged(AvaloniaObject d, AvaloniaPropertyChangedEventArgs e)
{
if (d is not Border border)
{
return;
}

if (e.GetNewValue<bool>())
{
var binding = new Binding(Visual.BoundsProperty.Name)
{
Converter = new BorderCircularConverter(),
Source = border,
};
border.Bind(Border.CornerRadiusProperty, binding);
}
else
{
border.ClearValue(Border.CornerRadiusProperty);
}
}
}
27 changes: 27 additions & 0 deletions src/Avalonia/HandyControl_Avalonia/Controls/Attach/IconElement.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
using Avalonia;
using Avalonia.Media;

namespace HandyControl.Controls;

public class IconElement
{
public static readonly AttachedProperty<Geometry> GeometryProperty =
AvaloniaProperty.RegisterAttached<IconElement, AvaloniaObject, Geometry>("Geometry");

public static void SetGeometry(AvaloniaObject element, Geometry value) => element.SetValue(GeometryProperty, value);

public static Geometry GetGeometry(AvaloniaObject element) => element.GetValue(GeometryProperty);

public static readonly AttachedProperty<double> WidthProperty =
AvaloniaProperty.RegisterAttached<IconElement, AvaloniaObject, double>("Width", defaultValue: double.NaN);

public static void SetWidth(AvaloniaObject element, double value) => element.SetValue(WidthProperty, value);

public static double GetWidth(AvaloniaObject element) => element.GetValue(WidthProperty);

public static readonly AttachedProperty<double> HeightProperty =
AvaloniaProperty.RegisterAttached<IconElement, AvaloniaObject, double>("Height", defaultValue: double.NaN);

public static void SetHeight(AvaloniaObject element, double value) => element.SetValue(HeightProperty, value);
public static double GetHeight(AvaloniaObject element) => element.GetValue(HeightProperty);
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,7 @@
xmlns:converter="clr-namespace:HandyControl.Tools.Converter">

<converter:BorderClipConverter x:Key="BorderClipConverter" />
<converter:BorderCircularConverter x:Key="BorderCircularConverter"/>
<converter:GeometrySpacingConverter x:Key="GeometrySpacingConverter" />

</ResourceDictionary>
Loading

0 comments on commit 2f0b397

Please sign in to comment.