私は3つの矩形で簡単なコントロールを設定しました。それぞれのポップアップにはポップアップが添付されています。最初は、3つのポップアップがすべて開かれるように設定されています(IsOpen = True).3つともStaysOpenフラグがfalseに設定されています。このためのXAMLは以下に掲載されています。StaysOpen = Falseを指定したポップアップ
StaysOpenに関するMSDNのドキュメントから、偽であるときにポップアップの外にマウスをクリックするとポップアップが閉じられるはずです。私が見つけたのは、アプリケーションの外部でマウスを完全にクリックすると、3つのポップアップがすべて正しく閉じられるということです。しかし、WPFウィンドウ自体をクリックすると、一番上のポップアップだけが閉じられます。他の2つは目に見えるままです。
ここで何が起こっているのか誰かが知っていますか?3つのポップアップがすべて予想通りに閉じることを確認するために私ができることはありますか?
<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>
私はClemensに同意します。 しかし、複数のポップアップを使用する代わりに、代わりにアドナーを使用することができます。彼らはあなたにもっと柔軟性を与える(しかし、扱いがさらに難しい) http://msdn.microsoft.com/en-us/library/ms743737.aspx – SvenG
答えのおかげで、クレメンス。残念ながら、それはうまく動作しません。私は現在、ポップアップを使用していますが、クリックイベントを自分で処理しています。本当に素敵じゃない... –