2014-11-16 3 views
3

나는 그런 XAML 코드가 : 의 ContextMenu - 바로여십시오 안 함으로

<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를 오픈해야한다는 의미 갖는다.

답변

10

첨부 된 속성 ContextMenuService.IsEnabledfalse으로 설정할 수 있습니다. 그런 다음 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; 
} 
관련 문제