今日、非常に奇妙な問題に遭遇しました。
画像の上にカーソルを合わせるとポップアップ メニューが表示されます。ポップアップ メニューは画像の右側にあります。
このポップアップ メニューは、画像を指す小さな矢印が付いた長方形のようにテンプレート化されています
メニューにはクリック可能な要素が含まれているため、マウスを画像からメニューに移動できるようにする必要があります。メニュー、すべて正常に動作します。画像とメニューの間の透明なスペース (矢印の上または下) にマウスを移動すると、メニューが消えます。
メニューのテンプレートは次のとおりです。
<Popup AllowsTransparency="True" Name="c_popup" Width="300" PlacementTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}" Placement="Right">
<Grid Background="Transparent">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="10" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Path Data="M 0 10 L 10 0 10 20 Z" Stroke="#252C37" Fill="#252C37" Margin="0,18,0,0" Grid.Column="0" />
<Grid Grid.Column="1" Background="#252C37">
<TextBlock Text="{Binding Name}" Margin="20,10,0,0" FontSize="18" Foreground="White" HorizontalAlignment="Stretch" VerticalAlignment="Top" TextWrapping="WrapWithOverflow" />
</Grid>
</Grid>
</Popup>
Nullではなく Background=" Transparent "を具体的に配置していることに気付くでしょう(hitTestingのように、これの影響を認識しています。この質問を参照してください)
ただし、面白いことに、Background="#01000000" を入力すると、期待どおりに動作します。(そして、これはほとんど透明な背景なので、私が望むものはほとんど得られます)
しかし、私はまだそこで何が起こっているのか知りたいです...
これがポップアップメニューであるという事実と関係があると思います。背景がnullの場合(予想される)、または明示的に透明に設定されている場合(予想されない)、ポップアップメニューで透明なサーフェスでhitTestingを削除するためにWPFが何かを行うと思います。誰でもこれを確認できますか?