Событие MouseUp не работает при щелчке левой кнопкой мыши

Я делаю графический интерфейс с использованием Windows Presentation Foundation (WPF). Когда я щелкаю мышью по кнопке (левой или правой), я хочу, чтобы появилось окно сообщения. До сих пор мне удавалось сделать пример из учебников, но он работает только тогда, когда я щелкаю правой кнопкой мыши, а не когда я щелкаю левой кнопкой мыши по кнопке. Я не вижу ничего в своем коде, что должно препятствовать работе левого клика, поэтому я надеюсь, что вы мне поможете.

Код XAML

<Grid>
    <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="72">
        Hello, WPF!
    </TextBlock>

    <!-- This button shuld activate the even MyButton_MouseUp -->
    <Button Margin="200,250,200,20" Name="MyButton"  MouseUp="MyButton_MouseUp">
        Test
    </Button>
</Grid>

Код C#

// This only works on right-click
private void MyButton_MouseUp(object sender, MouseButtonEventArgs e)
{
    MessageBox.Show("Hello world!");
}

2 ответа

Решение

Вы можете подписаться на PreviewMouseUp туннельное событие вместо MouseUp:

<Button Margin="200,250,200,20" Name="MyButton"  PreviewMouseUp="MyButton_MouseUp" />

PreviewMouseUp Стратегия маршрутизации - это туннелирование, т.е. VisualTree иерархия, и поэтому события туннеля запускаются до событий пузыря.

В дополнение к посту С. Акбари, этот стоит прочитать, чтобы понять, почему щелчок правой кнопкой мыши работает, а щелчок левой кнопкой мыши не...

Как использовать mouseDown и mouseUp для

Другие вопросы по тегам