Lapish72
@Lapish72

Как отключать ContextMenu на дочерних элементах?

Есть grid на нем будет располагаться коллекция контролов. Мне нужно сделать так, чтобы ContextMenu работало только между элементами. Есть такой набросок кода, но он не работает. Что я делаю не так?

<Grid Background="Transparent">
    <Grid.ContextMenu>
        <ContextMenu>
            <MenuItem Header="Добавить"/>
            <MenuItem Header="Удалить"/>
        </ContextMenu>
    </Grid.ContextMenu>

    <StackPanel>
        <Button Content="123" ContextMenuService.IsEnabled="False"/>
    </StackPanel>
</Grid>
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
Lapish72
@Lapish72 Автор вопроса
UserControl.xaml
<UserControl.Resources>
    <ContextMenu x:Key="AmazingMenu">
        <MenuItem Header="Item1"/>
        <MenuItem Header="Item2"/>
    </ContextMenu>
</UserControl.Resources>

<Grid x:Name="MegaGrid" Background="Transparent" MouseRightButtonDown="Grid_MouseRightButtonDown">
    <!-- Some controls -->
</Grid>


UserControl.xaml.cs
private void Grid_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
    var control = e.OriginalSource as Grid;

    if (control.Name.Equals("MegaGrid"))
    {
        MegaGrid.ContextMenu = FindResource("AmazingMenu") as ContextMenu;
    }
    else
    {
        MegaGrid.ContextMenu = null;
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы