From 9ffb8cc73627757234dca84ddfc6956d4c69261b Mon Sep 17 00:00:00 2001 From: rabbitism Date: Mon, 17 Jun 2024 16:21:34 +0800 Subject: [PATCH] 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