Предотвратить наследование от детей в ContextMenu родителей - PullRequest
4 голосов
/ 13 июня 2011

Согласно этому коду:

<StackPanel>
   <StackPanel.ContextMenu>
     <ContextMenu>
        <MenuItem Header="menuitem1"/>
        <MenuItem Header="menuitem2"/>
     </ContextMenu>
   </StackPanel.ContextMenu>

   <Button Width="100" Height="100"/>
   <Button Width="100" Height="100"/>
</StackPanel>

Если вы щелкнете правой кнопкой мыши по кнопкам, появится ContextMenu, дети унаследуют ContextMenu своих родителей.У меня вопрос, как я могу предотвратить эту функцию?

Редактировать: мне нужен путь в xaml, если это возможно.

Ответы [ 2 ]

4 голосов
/ 25 июня 2011

Я нашел это решение

<StackPanel>
   <StackPanel.ContextMenu>
     <ContextMenu>
        <MenuItem Header="menuitem1"/>
        <MenuItem Header="menuitem2"/>
     </ContextMenu>
   </StackPanel.ContextMenu>

   <Button Width="100" Height="100">
        <Button.ContextMenu>
            <ContextMenu Visibility="Hidden"/>
        </Button.ContextMenu>
   </Button>
   <Button Width="100" Height="100"/>
</StackPanel>
2 голосов
/ 13 июня 2011

На рассматриваемых кнопках необходимо остановить событие щелчка правой кнопкой мыши, распространяющееся до содержащего StackPanel.Вы можете сделать это, обработав MouseDown следующим образом:

void button_MouseDown(object sender, MouseButtonEventArgs e)
{
    if (e.RightButton == MouseButtonState.Pressed)
    {
        e.Handled = true;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...