Q064. 左クリックで ContextMenu を表示するには?
A. Blend SDK の ChangePropertyAction ビヘイビアーを使用します。
以下サンプルです。先日のエントリの XAML を改造し、TextBox を Button に変更しています。Button を左クリックすると ContextMenu を表示します。
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:l="http://schemas.livet-mvvm.net/2011/wpf" xmlns:local="clr-namespace:ContextMenuSample" xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions" x:Name="window" x:Class="MainWindow" Title="MainWindow" Height="100" Width="180"> <Window.DataContext> <local:MainWindowViewModel /> </Window.DataContext> <Grid> <Button Margin="0,20" Content="{Binding MessageText}" x:Name="Button1"> <i:Interaction.Triggers> <i:EventTrigger EventName="Click"> <ei:ChangePropertyAction TargetObject="{Binding ContextMenu, ElementName=Button1}" PropertyName="IsOpen" Value="True"/> <ei:ChangePropertyAction TargetObject="{Binding ContextMenu, ElementName=Button1}" PropertyName="PlacementTarget" Value="{Binding ElementName=Button1, Mode=OneWay}"/> </i:EventTrigger> </i:Interaction.Triggers> <Button.ContextMenu> <ContextMenu > <MenuItem Header="おはよう" Command="{Binding MorningCommand}"/> <MenuItem Header="こんにちは" Command="{Binding HelloCommand}"/> <Separator /> <MenuItem Header="こんばんは" Command="{Binding EveningCommand}" /> </ContextMenu> </Button.ContextMenu> </Button> </Grid> </Window>