2017-02-04 8 views
1

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

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 «s вместо MouseUp:

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

стратегия Маршрутизация PreviewMouseUp «s является Tunneling, то есть он войдет в VisualTree иерархии, и поэтому Tunnel events запускаются перед Bubble events.

+0

Спасибо, это и сделал трюк. Вы можете объяснить, почему? :-) – Noceo

+1

@Noceo См. Мой обновленный ответ, а также посмотрите ссылки MSDN, которые я включил. –

+0

Прохладный. Я все еще не понимаю, почему это работает при щелчке правой кнопкой мыши, хотя, по крайней мере, теперь я знаю, что существуют разные типы событий. Еще раз спасибо. – Noceo

0

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

How to use mouseDown and mouseUp on <button/>