2014-11-16 2 views
3

У меня есть такой код 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; 

} 

Так это означает, что Контекстное должен быть открыт только если условие выполняется, но она открывается в любом случае.

ответ

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; 
} 
Смежные вопросы