diff --git a/src/Perspex.Controls/Primitives/Popup.cs b/src/Perspex.Controls/Primitives/Popup.cs index 897e3ef90a..74459ed4c4 100644 --- a/src/Perspex.Controls/Primitives/Popup.cs +++ b/src/Perspex.Controls/Primitives/Popup.cs @@ -300,7 +300,15 @@ namespace Perspex.Controls.Primitives /// The event args. private void MaybeClose(object sender, EventArgs e) { - if (!StaysOpen) + var routed = e as RoutedEventArgs; + var outside = true; + + if (routed != null) + { + outside = ((IVisual)routed.Source).GetVisualRoot() != this.PopupRoot; + } + + if (outside && !StaysOpen) { Close(); }