diff --git a/src/Avalonia.Controls/Primitives/SelectingItemsControl.cs b/src/Avalonia.Controls/Primitives/SelectingItemsControl.cs index 4317d795f1..d3e7751c4e 100644 --- a/src/Avalonia.Controls/Primitives/SelectingItemsControl.cs +++ b/src/Avalonia.Controls/Primitives/SelectingItemsControl.cs @@ -354,19 +354,15 @@ namespace Avalonia.Controls.Primitives /// /// The control that raised the event. /// The container or null if the event did not originate in a container. - protected IControl? GetContainerFromEventSource(IInteractive eventSource) + protected IControl? GetContainerFromEventSource(IInteractive? eventSource) { - var parent = (IVisual)eventSource; - - while (parent != null) + for (var current = eventSource as IVisual; current != null; current = current.VisualParent) { - if (parent is IControl control && control.LogicalParent == this - && ItemContainerGenerator?.IndexFromContainer(control) != -1) + if (current is IControl control && control.LogicalParent == this && + ItemContainerGenerator?.IndexFromContainer(control) != -1) { return control; } - - parent = parent.VisualParent; } return null; @@ -670,7 +666,7 @@ namespace Avalonia.Controls.Primitives /// false. /// protected bool UpdateSelectionFromEventSource( - IInteractive eventSource, + IInteractive? eventSource, bool select = true, bool rangeModifier = false, bool toggleModifier = false,