diff --git a/src/Avalonia.Controls/ComboBox.cs b/src/Avalonia.Controls/ComboBox.cs
index 1daa6a5630..67ef6cd1e9 100644
--- a/src/Avalonia.Controls/ComboBox.cs
+++ b/src/Avalonia.Controls/ComboBox.cs
@@ -234,6 +234,23 @@ namespace Avalonia.Controls
base.OnTemplateApplied(e);
}
+ ///
+ /// Called when the ComboBox popup is closed, with the
+ /// that caused the popup to close.
+ ///
+ /// The event args.
+ ///
+ /// This method can be overridden to control whether the event that caused the popup to close
+ /// is swallowed or passed through.
+ ///
+ protected virtual void PopupClosedOverride(PopupClosedEventArgs e)
+ {
+ if (e.CloseEvent is PointerEventArgs pointerEvent)
+ {
+ pointerEvent.Handled = true;
+ }
+ }
+
internal void ItemFocused(ComboBoxItem dropDownItem)
{
if (IsDropDownOpen && dropDownItem.IsFocused && dropDownItem.IsArrangeValid)
@@ -247,10 +264,7 @@ namespace Avalonia.Controls
_subscriptionsOnOpen?.Dispose();
_subscriptionsOnOpen = null;
- if (e.CloseEvent is PointerEventArgs pointerEvent)
- {
- pointerEvent.Handled = true;
- }
+ PopupClosedOverride(e);
if (CanFocus(this))
{