From 9ffb8cc73627757234dca84ddfc6956d4c69261b Mon Sep 17 00:00:00 2001 From: rabbitism Date: Mon, 17 Jun 2024 16:21:34 +0800 Subject: [PATCH 1/2] fix: fix container selection state issue. --- src/Ursa/Controls/ComboBox/MultiComboBoxItem.cs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/Ursa/Controls/ComboBox/MultiComboBoxItem.cs b/src/Ursa/Controls/ComboBox/MultiComboBoxItem.cs index b56ae98..6850dfc 100644 --- a/src/Ursa/Controls/ComboBox/MultiComboBoxItem.cs +++ b/src/Ursa/Controls/ComboBox/MultiComboBoxItem.cs @@ -13,6 +13,7 @@ public class MultiComboBoxItem: ContentControl private MultiComboBox? _parent; private static readonly Point s_invalidPoint = new (double.NaN, double.NaN); private Point _pointerDownPoint = s_invalidPoint; + private bool _updateInternal; public static readonly StyledProperty IsSelectedProperty = AvaloniaProperty.Register( nameof(IsSelected)); @@ -34,6 +35,7 @@ public class MultiComboBoxItem: ContentControl private void OnSelectionChanged(AvaloniaPropertyChangedEventArgs args) { + if (_updateInternal) return; var parent = this.FindLogicalAncestorOfType(); if (args.NewValue.Value) { @@ -94,4 +96,15 @@ public class MultiComboBoxItem: ContentControl } } } + + protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e) + { + base.OnAttachedToVisualTree(e); + _updateInternal = true; + if (_parent?.ItemsPanelRoot is VirtualizingPanel) + { + IsSelected = _parent?.SelectedItems?.Contains(DataContext) ?? false; + } + _updateInternal = false; + } } \ No newline at end of file From fd5db085bf4d8e1dbc793f93a3765147591ff7e3 Mon Sep 17 00:00:00 2001 From: rabbitism Date: Sun, 23 Jun 2024 17:47:13 +0800 Subject: [PATCH 2/2] feat: move close button position, fix selection items static reference. --- demo/Ursa.Demo/Pages/MultiComboBoxDemo.axaml | 1 + src/Ursa.Themes.Semi/Controls/MultiComboBox.axaml | 15 ++++++++------- src/Ursa/Controls/ComboBox/MultiComboBox.cs | 9 ++++++--- src/Ursa/Controls/ComboBox/MultiComboBoxItem.cs | 3 ++- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/demo/Ursa.Demo/Pages/MultiComboBoxDemo.axaml b/demo/Ursa.Demo/Pages/MultiComboBoxDemo.axaml index 9d94a94..7fe0008 100644 --- a/demo/Ursa.Demo/Pages/MultiComboBoxDemo.axaml +++ b/demo/Ursa.Demo/Pages/MultiComboBoxDemo.axaml @@ -17,6 +17,7 @@ InnerLeftContent="Left" InnerRightContent="Right" Classes="ClearButton" + MaxHeight="200" ItemsSource="{Binding Items}" > diff --git a/src/Ursa.Themes.Semi/Controls/MultiComboBox.axaml b/src/Ursa.Themes.Semi/Controls/MultiComboBox.axaml index ff38168..df334e6 100644 --- a/src/Ursa.Themes.Semi/Controls/MultiComboBox.axaml +++ b/src/Ursa.Themes.Semi/Controls/MultiComboBox.axaml @@ -60,13 +60,6 @@ -