WPFだけど、WinFormsが使いたい。
そういう時はあります。PictureBoxなんてImageより使い勝手がいいですし。
WinFormsなんだけど、コンテキストメニューはWPFのものを使いたいということはあります。
そうしないと古臭いUIが見え隠れしてしまうので
<WindowsFormsHost> <WindowsFormsHost.ContextMenu> <ContextMenu x:Name="ContextMenu1" > <MenuItem Header="Menu item 1" /> <MenuItem Header="Menu item 2" /> <Separator /> <MenuItem Header="Menu item 3" /> </ContextMenu> </WindowsFormsHost.ContextMenu> <local:PanelControl x:Name="Panel" Dock="Fill" /> </WindowsFormsHost>
例によって、上記のような普通のWPFのコントロールにコンテキストメニューを設定する方法だけではコンテキストメニューは表示されません。
以下のようにクリックされた時に明示的にConextMenuを開いてあげる必要があります。
public MapGraphicControl() { InitializeComponent(); Panel.MouseClick += PanelOnMouseClick; } private void PanelOnMouseClick(object sender, MouseEventArgs e) { if ((e.Button & MouseButtons.Right) == MouseButtons.Right) { ContextMenu1.IsOpen = true; } }