メニュー項目の数が 1 より大きい場合、マウスの左クリックで ContextMenu を呼び出したいと思います。これが私の XAML です。
<Button Content="Items" Click="Button_Click">
<Button.ContextMenu>
<ContextMenu ItemsSource="{Binding Items}">
<ContextMenu.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</ContextMenu.ItemTemplate>
</ContextMenu>
</Button.ContextMenu></Button>
そして、これはコードビハインドです:
private void Button_Click(object sender, RoutedEventArgs e)
{
Button senderButton = sender as Button;
if (senderButton == null) return;
var items = senderButton.ContextMenu.Items;
if (items.Count < 2) return;
senderButton.ContextMenu.PlacementTarget = senderButton;
senderButton.ContextMenu.IsOpen = true;
}
問題はそのアイテムです。if (items.Count < 2) return;
行を削除するとアイテムがよく表示されますが、カウントは常に0に等しくなります