【问题标题】:Contextmenu - disable right click to open it上下文菜单 - 禁用右键单击以打开它
【发布时间】:2017-01-10 17:24:43
【问题描述】:

我有这样的 xaml 代码:

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

        </ContextMenu>
    </Grid.ContextMenu>
</Grid>

我在后面的代码中生成网格的项目。我想要的是在右键单击时禁用上下文菜单打开。我想在某些情况发生时打开它。

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

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

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

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

}

所以这意味着只有在满足条件时才应该打开上下文菜单,但无论如何它都会打开。

【问题讨论】:

    标签: c# wpf xaml contextmenu


    【解决方案1】:

    您可以将附加属性ContextMenuService.IsEnabled 设置为false。然后你可以手动弹出ContextMenu。

    您必须为拥有该菜单的 GUI 元素设置该属性。为菜单本身设置它不会有任何作用。

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

    【讨论】:

    • 或通过代码使用ContextMenuService.SetIsEnabled(this, false);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多