4

今日、非常に奇妙な問題に遭遇しました。

画像の上にカーソルを合わせるとポップアップ メニューが表示されます。ポップアップ メニューは画像の右側にあります。

このポップアップ メニューは、画像を指す小さな矢印が付いた長方形のようにテンプレート化されています

メニューにはクリック可能な要素が含まれているため、マウスを画像からメニューに移動できるようにする必要があります。メニュー、すべて正常に動作します。画像とメニューの間の透明なスペース (矢印の上または下) にマウスを移動すると、メニューが消えます。

メニューのテンプレートは次のとおりです。

<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が何かを行うと思います。誰でもこれを確認できますか?

4

1 に答える 1