Я установил простой элемент управления с тремя прямоугольниками, к каждому из которых прикреплено всплывающее окно. Первоначально все три всплывающих окна открываются (IsOpen = True), а для всех трех флаг StaysOpen имеет значение false. XAML для этого размещен ниже.
Из документации MSDN по StaysOpen я понял, что когда оно ложно, нажатие мыши вне всплывающего окна должно закрыть всплывающее окно. Я обнаружил, что если я полностью щелкну мышью за пределами приложения, все три всплывающих окна закроются правильно. Однако если я щелкну в самом окне WPF, то закроется только верхнее всплывающее окно. Два других остаются видимыми.
Кто-нибудь знает, что здесь происходит, и что я могу сделать, чтобы все три всплывающих окна закрылись, как ожидалось?
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="30"/>
<RowDefinition Height="*"/>
<RowDefinition Height="30"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Rectangle x:Name="Rect1" Fill="DarkBlue"/>
<Rectangle x:Name="Rect2" Fill="Orange" Grid.Row="2"/>
<Rectangle x:Name="Rect3" Fill="DarkRed" Grid.Row="4"/>
<Popup PlacementTarget="{Binding ElementName=Rect1}" Placement="Right" IsOpen="True" StaysOpen="False">
<Border BorderBrush="Black" BorderThickness="2" Background="Wheat" Width="200" Height="100">
<TextBlock>Popup 1</TextBlock>
</Border>
</Popup>
<Popup PlacementTarget="{Binding ElementName=Rect2}" Placement="Right" IsOpen="True" StaysOpen="False">
<Border BorderBrush="Black" BorderThickness="2" Background="Wheat" Width="200" Height="100">
<TextBlock>Popup 2</TextBlock>
</Border>
</Popup>
<Popup PlacementTarget="{Binding ElementName=Rect3}" Placement="Right" IsOpen="True" StaysOpen="False">
<Border BorderBrush="Black" BorderThickness="2" Background="Wheat" Width="200" Height="100">
<TextBlock>Popup 3</TextBlock>
</Border>
</Popup>
</Grid>
</Window>