Feedback

KeyDown in Control (Windows Store Apps)

Sprache: C#

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 [b]Preview[/b]KeyDown-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
    }
}
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
    }
}