2013-05-20 6 views
5

Gibt es eine Entsprechung zu PreviewKeyDown für eine Windows Store App? Es ist nicht verfügbar.PreviewKeyDown für Windows Store App ListBox

Ich habe genau das gleiche Problem wie described here:

ich eine List-Box mit einem Text über sie haben. Ich möchte mit den Pfeiltasten von der ListBox zur TextBox navigieren. Die Absicht ist, dass, wenn das erste Element in der ListBox ausgewählt ist und der Benutzer die Tastenkombination aufruft, die TextBox den Fokus erhält.

+0

Es sollte beachtet werden, dass dies keine doppelte Frage ist, da das oben verlinkte Problem für WPF ist. –

+0

Die WPF-Frage hat das gleiche Problem, Schlüsselbereich! –

+0

Es ist höflich, die richtige Antwort zu markieren. –

Antwort

7

Ah, knifflig. Die Handhabung wichtiger Ereignisse ist nicht besonders offensichtlich. Hier ist, was Sie wollen:

public MainPage() 
{ 
    this.InitializeComponent(); 
    Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated += (s, args) => 
    { 
     if ((args.EventType == CoreAcceleratorKeyEventType.SystemKeyDown 
      || args.EventType == CoreAcceleratorKeyEventType.KeyDown) 
      && (args.VirtualKey == VirtualKey.Up)) 
     { 
      MoveUp(); 
     } 
     else if ((args.EventType == CoreAcceleratorKeyEventType.SystemKeyDown 
      || args.EventType == CoreAcceleratorKeyEventType.KeyDown) 
      && (args.VirtualKey == VirtualKey.Down)) 
     { 
      MoveDown(); 
     } 
    }; 
} 

private void MoveUp() 
{ 
    // this part is up to you 
    throw new NotImplementedException(); 
} 

private void MoveDown() 
{ 
    // this part is up to you 
    throw new NotImplementedException(); 
} 

Viel Glück!

+0

Das ist wirklich nett. Das AcceleratorKeyActivated-Ereignis wird jedoch immer dann ausgelöst, wenn eine Taste gedrückt wird, unabhängig davon, welches Steuerelement im Fokus ist. Wie überprüfe ich, ob die Liste im Fokus ist? Ich habe eine neue Frage erstellt: https://stackoverflow.com/questions/25248486/check-if-listview-has-focus – PEK