MenuItem не запускает событие MouseRightButtonDown - PullRequest
1 голос
/ 16 июня 2011

Мне нечего сказать, просто можно войти в обработчик событий.

XAML:

 <Grid>
    <Menu IsMainMenu="True" x:Name="x">
        <MenuItem Header="_File" />
        <MenuItem Header="_Edit" />
        <MenuItem Header="_View" />
        <MenuItem Header="_Window" />
        <MenuItem Header="_Help" />
    </Menu>
</Grid>

Код:

 public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        foreach (var item in x.Items)
        {
            ((MenuItem)item).MouseRightButtonDown += MainWindow_MouseRightButtonDown;
        }
    }

    void MainWindow_MouseRightButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
    {
        // Can't get here
    }

}

p.s - То же самое с MouseRightButtonUp, MouseLeftButtonDown и MouseLeftButtonUp.

Ответы [ 2 ]

1 голос
/ 16 июня 2011

Это потому, что MenuItem обрабатывает событие и не позволяет ему распространяться. Что-то конкретно вам нужно сделать? Трудно дать совет, не сказав нам об этом. Вы рассматривали возможность использования события PreviewMouseRightButtonDown вместо

0 голосов
/ 16 июня 2011

Я думаю, вам необходимо понять связь между событием MouseDown и другими событиями мыши, такими как MouseLeftButtonDown и MouseRightButtonDown.Пожалуйста, прочитайте раздел «Замечания» на Событие UIElement.MouseLeftButtonDown .

. Здесь предлагаются два возможных решения.Один из следующих кодов:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        foreach (var item in x.Items)
        {
            var menuItem = ((MenuItem)item);
            //menuItem.MouseRightButtonDown += MainWindow_MouseRightButtonDown;
            menuItem.AddHandler(UIElement.MouseRightButtonDownEvent, new RoutedEventHandler(MainWindow_MouseRightButtonDown), true);
        }
    }

    void MainWindow_MouseRightButtonDown(object sender, RoutedEventArgs e)
    {
        Debug.WriteLine("Handled:{0}\r\nOriginalSource: {1}\r\nSource:{2}\r\nRoutedEvent:{3}", 
                    e.Handled, e.OriginalSource, e.Source, e.RoutedEvent);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...