LoginSignup
2
2

More than 5 years have passed since last update.

WPF:CanvasなどのコントロールはBackground/Fillを明示的に指定しないとマウスイベントが発生しない

Last updated at Posted at 2018-01-24

Canvasとマウスクリック

WPFでCanvasコントロールにおいて, コンテキストメニューなどのマウスクリックイベントが無効になっていた原因と解決法の備忘録

問題のコード

マウスの右クリックイベントやContextMenuを設定してるのに, 右クリックしても反応ナシ...

<Canvas Name="MainCanvas" Width="400" Height="300" MouseRightButtonDown="MainCanvas_MouseRightButtonDown">
    <Canvas.ContextMenu>
        <ContextMenu>
            <MenuItem Header="Hello!"></MenuItem>
        </ContextMenu>
    </Canvas.ContextMenu>
</Canvas>

解決法と原因

どうやらBackgroundがnullだと「空洞扱い」になってしまい, マウスダウンイベントが取れていなかったようです.

↓のコードなら上手くいきました :)

<Canvas Name="MainCanvas" Width="400" Height="300" MouseRightButtonDown="MainCanvas_MouseRightButtonDown" Background="Transparent">
    <Canvas.ContextMenu>
        <ContextMenu>
            <MenuItem Header="Hello!"></MenuItem>
        </ContextMenu>
    </Canvas.ContextMenu>
</Canvas>

「Transparent」や「AliceBlue」など, nullでないBackGroundを設定してあげることで解決しました.

参考

Why doesn't this WPF code generate a context menu?

余談:

こんなん初見じゃわからんがな orz

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2