码:
<Button Style="{StaticResource HPForegroundStyle}" IsTabStop="False"
Command="{Binding ForegroundPhoneCommand}" Click="Button_Click">
<Button.ContextMenu>
<ContextMenu ItemsSource="{Binding OptionsMenuItemList}" ItemContainerStyle="{StaticResource ContextMenuItemStyle}"
IsOpen="{Binding IsMenuOpen}"
PlacementTarget="{Binding RelativeSourc={RelativeSource AncestorType={x:Type Button}}}">
</ContextMenu>
</Button.ContextMenu>
</Button>
Run Code Online (Sandbox Code Playgroud)
我正在使用MVVM模式.在ViewModel中,我有一个属性'IsMenuOpen',它控制上下文菜单打开关闭.问题是我能够禁用右键单击而不能在左键单击时显示上下文菜单.
sev*_*ian 21
您还可以检查ContextMenuService.IsEnabled父控件上的附加属性.它将仅阻止右键单击,您仍然可以在左键单击时手动显示菜单,因此基于前面的示例:
<Button x:Name="btn" Click="btn_Click" ContextMenuService.IsEnabled="false">
<Button.ContextMenu>
<ContextMenu x:Name="popup">
...
</ContextMenu>
</Button.ContextMenu>
</Button>
private void btn_Click(object sender, RoutedEventArgs e)
{
popup.Visibility = Visibility.Visible;
popup.IsOpen = true;
}
Run Code Online (Sandbox Code Playgroud)
如果要将菜单绑定到属性,请考虑 Popup 控件。它具有与上下文菜单类似的功能,但不绑定到特定的鼠标按钮......
<Popup IsVisible = {Binding IsMenuOpen} >
<!-- Fill in what you need here -->
</Popup>
Run Code Online (Sandbox Code Playgroud)