feat: support top and bottom icon button.

This commit is contained in:
rabbitism
2024-01-27 15:09:38 +08:00
parent cfbf58e9aa
commit b46eb8c456
5 changed files with 97 additions and 37 deletions

View File

@@ -3,14 +3,18 @@ using Avalonia.Controls;
using Avalonia.Controls.Metadata;
using Avalonia.Controls.Primitives;
using Avalonia.Controls.Templates;
using Avalonia.Layout;
using Ursa.Common;
namespace Ursa.Controls;
[PseudoClasses(PC_Right)]
[PseudoClasses(PC_Right, PC_Left, PC_Top, PC_Bottom)]
public class IconButton: Button
{
public const string PC_Right = ":right";
public const string PC_Left = ":left";
public const string PC_Top = ":top";
public const string PC_Bottom = ":bottom";
public static readonly StyledProperty<object?> IconProperty = AvaloniaProperty.Register<IconButton, object?>(
nameof(Icon));
@@ -64,6 +68,9 @@ public class IconButton: Button
private void SetPlacement(IconPlacement placement)
{
PseudoClasses.Set(PC_Left, placement == IconPlacement.Left);
PseudoClasses.Set(PC_Right, placement == IconPlacement.Right);
PseudoClasses.Set(PC_Top, placement == IconPlacement.Top);
PseudoClasses.Set(PC_Bottom, placement == IconPlacement.Bottom);
}
}