Feedback

C# - KeyDown in Control (Windows Store Apps)

Veröffentlicht von am 12/24/2013
(1 Bewertungen)
Wenn man für eine Windows Store App ein eigenes Control erstellt, dann funktioniert das KeyDown-Event (und andere auch) nicht korrekt. Das liegt an der Art, wie die Event verarbeitet werden.
In WPF könnte man einfach das PreviewKeyDown-Event nutzen, das gibt es unter WinRT aber nicht.

Ich fand aber eine Möglichkeit auf Stack Overflow:
http://stackoverflow.com/a/16996731/1623754
Darum Danke an Jerry Nixon für die super Idee :)

Dabei wird das AcceleratorKeyActivated-Event des CoreWindows abonniert. In dem Eventhandler kann man dann einfach die gedrückte Taste abfragen. Das zeigt das Snippet.
void CreateAbo()
{
    Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated += OnKeyDown;//Event abonnieren
}

private void OnKeyDown(CoreDispatcher sender, AcceleratorKeyEventArgs args)
{
    if (args.EventType == CoreAcceleratorKeyEventType.SystemKeyDown || args.EventType == CoreAcceleratorKeyEventType.KeyDown)
    {
        //e.VirtualKey enthält die gedrückte Taste
    }
}

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!