Событие до открытия контекстного меню - PullRequest
3 голосов
/ 17 марта 2011

В этом простом примере я хочу показать MessageBox перед отображением контекстного меню.

Я пишу этот код в «XAML»:

<Border>
    <Border.ContextMenu>
        <ContextMenu ContextMenuOpening="ContextMenu_ContextMenuOpening">
            <MenuItem Header="Select pic" IsEnabled="{Binding Path=ProductSelected}" />
            <MenuItem Header="Paste pict" Name="miPaste" Click="miPaste_Click"/>
        </ContextMenu>
    </Border.ContextMenu>
    <Image Stretch="Fill" Source="{Binding Path=Product.Picture}" />
</Border>

И пишуэто в «CS»:

private void ContextMenu_ContextMenuOpening(object sender, ContextMenuEventArgs e)
{
    MessageBox.Show("OPPENING");
}

Я не знаю, почему, когда я нажимаю правую кнопку мыши, появляется контекстное меню, но MessageBox никогда не отображается.

1 Ответ

9 голосов
/ 17 марта 2011

Я считаю, что событие ContextMenuOpening должно быть определено для элемента управления, для которого открыто контекстное меню, а не для самого контекстного меню. Посмотрите, подойдет ли вам приведенный ниже код:

<Border ContextMenuOpening="ContextMenu_ContextMenuOpening">
    <Border.ContextMenu>
        <ContextMenu >
            <MenuItem Header="Select pic" />
            <MenuItem Header="Paste pict" Name="miPaste" />
        </ContextMenu>
    </Border.ContextMenu>
</Border>

надеюсь, это поможет, с уважением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...