Задать вопрос
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>
  • Вопрос задан
  • 96 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия C#-разработчик
    12 месяцев
    Далее
  • Merion Academy
    C# разработчик с нуля
    4 месяца
    Далее
  • Stepik
    PRO C#. Профессия "Backend разработчик"
    4 месяца
    Далее
Решения вопроса 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;
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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