クリックすると ContextMenu が表示されるボタンがあります。この ContextMenu には、MenuItems があります。MenuItem が左クリックされた場合、コマンドを実行する必要があります。この動作はすべて、現在、次のコードで適切に機能します。
<Button.ContextMenu>
<ContextMenu>
<ContextMenu.ItemContainerStyle>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="Command" Value="{Binding StartContextMenuCommand}" />
<Setter Property="CommandParameter" Value="{Binding RelativeSource={RelativeSource Self}, Path=Header}" />
</Style>
</ContextMenu.ItemContainerStyle>
<MenuItem Header="{x:Static Name:ContextMenuStartNames.1}"/>
<MenuItem Header="{x:Static Name:ContextMenuStartNames.2}"/>
<MenuItem Header="{x:Static Name:ContextMenuStartNames.3}"/>
<MenuItem Header="{x:Static Name:ContextMenuStartNames.4}"/>
</ContextMenu>
</Button.ContextMenu>
ここで、各メニュー項目に 1 つの MenuItem を含むコンテキスト メニューが必要です。左クリックすると MenuItem の Command が呼び出されるため、右クリックの動作で次の ContextMenu を表示する必要があります。
<ContextMenu>
<MenuItem Header="Set Default"></MenuItem>
</ContextMenu>
これをItemContainerStyleのセッターとして入れてみました。また、MenuItem の ContextMenu として配置しようとしましたが、どちらの試みもうまくいきませんでした。これを行うハックな方法を思いつくことができると確信していますが、クリーンでシンプルに保ちたいと思っています。