Why does a WPF Popup close when its background area is clicked? Why does a WPF Popup close when its background area is clicked? wpf wpf

Why does a WPF Popup close when its background area is clicked?


In the end, I found that the following worked. Given...

<Popup x:Name="_popup"       StaysOpen="False"       PopupAnimation="Slide"       AllowsTransparency="True">

...I used this code in the constructor after calling InitializeComponent...

// Ensure that any mouse event that gets through to the// popup is considered handled, otherwise the popup would close_popup.MouseDown += (s, e) => e.Handled = true;


It does seem odd that it would ignore Focusable on the Popup and Border. I was able to fix your problem by changing StaysOpen in a trigger when the mouse is over the Border:

<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">    <ToggleButton x:Name="btnPop" Content="Pop!" Width="100" Height="50"/>    <Popup Placement="Bottom" PlacementTarget="{Binding ElementName=btnPop}" IsOpen="{Binding IsChecked, ElementName=btnPop}">        <Popup.Style>            <Style TargetType="{x:Type Popup}">                <Setter Property="StaysOpen" Value="False"/>                <Style.Triggers>                    <DataTrigger Binding="{Binding IsMouseOver, ElementName=brd}" Value="True">                        <Setter Property="StaysOpen" Value="True"/>                    </DataTrigger>                </Style.Triggers>            </Style>        </Popup.Style>        <Border x:Name="brd" Background="White" BorderThickness="1" BorderBrush="Black">            <StackPanel>                <TextBox Margin="10"/>                <TextBlock Text="Some text is here." Margin="10"/>                <TextBox Margin="10"/>            </StackPanel>                    </Border>    </Popup></Grid>


My best guess is you have some transparency issues going on. Try setting a background brush on the popup.