我有这样的xaml代码:
<Grid x:Name="boardGrid">
<Grid.ContextMenu>
<ContextMenu Opacity="0.7" x:Name="menuContext">
</ContextMenu>
</Grid.ContextMenu>
</Grid>
我在后面的代码中生成网格物品。我想要的是右键单击禁用上下文菜单打开。我想在确定条件发生时打开它。
这就是我在.cs文件中的内容:
每个对象都有unit.MouseRightButtonUp + = unit_MouseRightButton
void unit_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
{
if (CurrentGame.CurrentPlayer.HasTurn == false) return;
.....
ContextMenu.IsOpen = true;
}
所以这意味着只有条件得到满足才能打开Contextmenu,但无论如何它都会打开。
答案 0 :(得分:10)
您可以将附加属性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;
}