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
}
}
Abgelegt unter
KeyDown,
PreviewKeyDown,
VirtualKey,
CoreWindow,
OnKeyDown,
Control,
CustomControl,
UserControl,
WindowsStoreApp,
Windows8App,
WinRT,
Windows8,
App.
Kommentare zum Snippet