feat: simplify closable tag.

This commit is contained in:
Dong Bin
2025-08-27 23:37:23 +08:00
parent ca3e78c3a7
commit 24dda1ebaf
4 changed files with 11 additions and 38 deletions

View File

@@ -215,7 +215,7 @@ public class MultiComboBox : SelectingItemsControl, IInnerContentControl, IPopup
{
if (o is StyledElement s)
{
var data = s is ClosableTag { VisualContent: not null } c ? c.Content : s.DataContext;
var data = s.DataContext;
SelectedItems?.Remove(data);
var item = Items.FirstOrDefault(a => ReferenceEquals(a, data));
if (item is not null)

View File

@@ -1,6 +1,7 @@
using System.Windows.Input;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.Shapes;
using Avalonia.Layout;
using Avalonia.Media;
@@ -35,12 +36,18 @@ public class MultiComboBoxSelectedItemList: ItemsControl
tag.Command = RemoveCommand;
if (item is Layoutable visualContent)
{
tag.VisualContent = new VisualBrush
var visualBrush= new VisualBrush
{
Visual = visualContent,
};
tag.VisualContentWidth = visualContent.Bounds.Width;
tag.VisualContentHeight = visualContent.Bounds.Height;
var rectangle = new Rectangle()
{
Fill = visualBrush,
Width = visualContent.Bounds.Width,
Height = visualContent.Bounds.Height,
};
tag.Content = rectangle;
tag.DataContext = item;
}
}
}

View File

@@ -13,37 +13,10 @@ public class ClosableTag : ContentControl
public static readonly StyledProperty<ICommand?> CommandProperty = AvaloniaProperty.Register<ClosableTag, ICommand?>(
nameof(Command));
public static readonly StyledProperty<VisualBrush?> VisualContentProperty = AvaloniaProperty.Register<ClosableTag, VisualBrush?>(
nameof(VisualContent));
public static readonly StyledProperty<double?> VisualContentWidthProperty = AvaloniaProperty.Register<ClosableTag, double?>(
nameof(VisualContentWidth));
public static readonly StyledProperty<double?> VisualContentHeightProperty = AvaloniaProperty.Register<ClosableTag, double?>(
nameof(VisualContentHeight));
public ICommand? Command
{
get => GetValue(CommandProperty);
set => SetValue(CommandProperty, value);
}
public VisualBrush? VisualContent
{
get => GetValue(VisualContentProperty);
set => SetValue(VisualContentProperty, value);
}
public double? VisualContentWidth
{
get => GetValue(VisualContentWidthProperty);
set => SetValue(VisualContentWidthProperty, value);
}
public double? VisualContentHeight
{
get => GetValue(VisualContentHeightProperty);
set => SetValue(VisualContentHeightProperty, value);
}
}