2015-05-28 2 views
1

Мой вопрос прост. Можно ли запускать mouseup и mousedown при активации keyup и keydown в WPF.Trigger mouseup event on keyup - WPF

У меня есть набор обработчиков событий для мыши и мыши в моем пользовательском элементе управления. Я хочу вызвать то же самое, если пользователь попытается нажать клавишу пробела на моей пользовательской кнопке.

private void CustomButton_MouseDown(object sender, MouseButtonEventArgs e) 
    { 
     eventlabel.Content = "Mousedown event Triggered";    
    } 

    private void CustomButton_MouseUp(object sender, MouseButtonEventArgs e) 
    { 
     eventlabel.Content = "MouseUp event Triggered"; 
    } 

    private void CustomButton_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.Key == Key.Space) 
     { 
      //Need to trigger all the handlers of mousedown 
     } 
    } 

    private void CustomButton_KeyUp(object sender, KeyEventArgs e) 
    { 
     if (e.Key == Key.Space) 
     { 
      //Need to trigger all the handlers of mouseup 
     } 
    } 
+0

какой ошибки вы получите после того, как попробовать – tharif

+0

Походит [проблема XY] (http://meta.stackexchange.com/q/66377), вы пытаетесь достичь чего-то как [это] (http://stackoverflow.com/q/8272681/1997232)? – Sinatr

+0

Вам нужно смоделировать события мыши или просто выполнить код в обработчике событий? Если последнее, просто переместите его на отдельный метод и вызовите его. –

ответ

1

Вы можете создавать события во всех UIElements с помощью RaiseEvent (EventArgs). В MouseButtonArgsEventsArgs можно использовать, как следует в KeyDown-EventHandler:

MouseDevice mouseDevice = Mouse.PrimaryDevice; 
    MouseButtonEventArgs mouseButtonEventArgs = new MouseButtonEventArgs(mouseDevice, 0, MouseButton.Left); 
    mouseButtonEventArgs.RoutedEvent = Mouse.MouseDownEvent; 
    mouseButtonEventArgs.Source = this; 
    RaiseEvent(mouseButtonEventArgs); 

(модифицированный пример из https://social.msdn.microsoft.com/Forums/vstudio/de-DE/7ec6b75b-b808-48ca-a880-fafa9025da6e/how-to-raise-a-click-event-on-an-uielement?forum=wpf)

0

Ответ упоминается Tobias работает для меня. Но нужно немного подправить.

elementName.RaiseEvent(new MouseButtonEventArgs(Mouse.PrimaryDevice, 0, MouseButton.Left) 
{ 
    RoutedEvent = Mouse.MouseDownEvent, 
    Source = this, 
}); 

Here является Reference