buttonを左クリックして、コンテキストメニューを表示する方法
そもそも、コンテキストメニューとは、右クリックで表示されるメニューのことです。
それを左クリックでも表示してみようという、至極簡単なお話。
普通に、コンテキストメニューとして実装するなら、次のようなソースです。(ソースが見にくくなるので、細かい修飾部分は削っています)
//XAML
<Button>
<StackPanel>
<materialDesign:PackIcon Kind="LanDisconnect"/>
<Label Name="ConMsg" Padding="0">サーバーに接続中...</Label>
</StackPanel>
<Button.ContextMenu>
<ContextMenu>
<MenuItem Header="切断"/>
<MenuItem Header="再接続"/>
</ContextMenu>
</Button.ContextMenu>
</Button>
とまあ、細かいところを除けばこれで実装できるんですが、いかんせんボタンを押したときの動作としてメニューを開きたいので、次のようにしました。いと安し。
//XAML 修正後
<Button Click="statusButtonLeftClick">
<StackPanel>
<materialDesign:PackIcon Kind="LanDisconnect"/>
<Label Name="ConMsg" Padding="0">サーバーに接続中...</Label>
</StackPanel>
<Button.ContextMenu>
<ContextMenu Name="statusButtonContextmenu">
<MenuItem Header="切断"/>
<MenuItem Header="再接続"/>
</ContextMenu>
</Button.ContextMenu>
</Button>
//CS
private void statusButtonLeftClick(object sender, EventArgs e)
{
statusButtonContextmenu.IsOpen = true;
}
たったこれだけ。
小難しいこともなにもいりません。ただただ、IsOpenをtrueにしてあげれば、コンテキストメニューが左クリックでも開くようになります。