From b81d6c69a773d41924646827bf03a6ae299eba3a Mon Sep 17 00:00:00 2001 From: Zhang Dian <54255897+zdpcdt@users.noreply.github.com> Date: Mon, 2 Jun 2025 02:12:24 +0800 Subject: [PATCH] feat: replace PathIcon with Button. --- src/Ursa.Themes.Semi/Controls/TagInput.axaml | 19 ++++++++-------- src/Ursa/Controls/TagInput/ClosableTag.cs | 24 +++----------------- 2 files changed, 13 insertions(+), 30 deletions(-) diff --git a/src/Ursa.Themes.Semi/Controls/TagInput.axaml b/src/Ursa.Themes.Semi/Controls/TagInput.axaml index 3638c06..1e865f6 100644 --- a/src/Ursa.Themes.Semi/Controls/TagInput.axaml +++ b/src/Ursa.Themes.Semi/Controls/TagInput.axaml @@ -124,16 +124,17 @@ BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="3"> - + Command="{TemplateBinding Command}" + CommandParameter="{TemplateBinding}" + Content="{StaticResource ClosableTagCloseIconGlyph}" /> - - diff --git a/src/Ursa/Controls/TagInput/ClosableTag.cs b/src/Ursa/Controls/TagInput/ClosableTag.cs index 45980b8..c37417e 100644 --- a/src/Ursa/Controls/TagInput/ClosableTag.cs +++ b/src/Ursa/Controls/TagInput/ClosableTag.cs @@ -3,15 +3,14 @@ using Avalonia; using Avalonia.Controls; using Avalonia.Controls.Metadata; using Avalonia.Controls.Primitives; -using Avalonia.Input; namespace Ursa.Controls; -[TemplatePart(PART_CloseButton, typeof(PathIcon))] +[TemplatePart(PART_CloseButton, typeof(Button))] public class ClosableTag : ContentControl { public const string PART_CloseButton = "PART_CloseButton"; - private PathIcon? _icon; + private Button? _closeButton; public static readonly StyledProperty CommandProperty = AvaloniaProperty.Register( nameof(Command)); @@ -25,23 +24,6 @@ public class ClosableTag : ContentControl protected override void OnApplyTemplate(TemplateAppliedEventArgs e) { base.OnApplyTemplate(e); - if (_icon is not null) - { - _icon.PointerReleased -= OnPointerReleased; - } - - _icon = e.NameScope.Find(PART_CloseButton); - if (_icon is not null) - { - _icon.PointerReleased += OnPointerReleased; - } - } - - private void OnPointerReleased(object? sender, PointerReleasedEventArgs args) - { - if (Command is not null && Command.CanExecute(null)) - { - Command.Execute(this); - } + _closeButton = e.NameScope.Find