Contextmenu - 禁用右键单击以打开它

Luk*_*kas 3 c# wpf xaml contextmenu

我有这样的xaml代码:

<Grid x:Name="boardGrid">
    <Grid.ContextMenu>
        <ContextMenu Opacity="0.7" x:Name="menuContext">

        </ContextMenu>
    </Grid.ContextMenu>
</Grid>
Run Code Online (Sandbox Code Playgroud)

我在后面的代码中生成网格项.我想要的是右键单击禁用上下文菜单打开.我想在确定条件发生时打开它.

这就是我在.cs文件中的内容:

  • 生成Unit的对象并将它们放入Grid中;

每个对象都有unit.MouseRightButtonUp + = unit_MouseRightButton

void unit_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
{
    if (CurrentGame.CurrentPlayer.HasTurn == false) return; 
    .....
    ContextMenu.IsOpen = true;

}
Run Code Online (Sandbox Code Playgroud)

所以这意味着只有条件得到满足才能打开Contextmenu,但无论如何它都会打开.

Kin*_*ing 10

您可以将附加属性设置ContextMenuService.IsEnabledfalse.然后,您可以手动弹出ContextMenu.

您必须为拥有该菜单的GUI元素设置该属性.为菜单本身设置它什么都不做.

<Grid x:Name="boardGrid" ContextMenuService.IsEnabled="false">
    <!-- ... -->
</Grid>
Run Code Online (Sandbox Code Playgroud)
void unit_MouseRightButtonUp(object sender, MouseButtonEventArgs e) {
    if (CurrentGame.CurrentPlayer.HasTurn == false) return; 
    .....
    boardGrid.ContextMenu.IsOpen = true;
}
Run Code Online (Sandbox Code Playgroud)

  • 或通过代码使用 `ContextMenuService.SetIsEnabled(this, false);` (3认同)