2013-05-20 20 views
5

Czy istnieje odpowiednik PreviewKeyDown dla aplikacji sklepu internetowego Store ? To nie jest dostępne.PreviewKeyDown dla Windows Store App ListBox

Mam dokładnie taki sam problem jak described here:

Mam listbox z TextBox nad nim. Chciałbym użyć klawiszy strzałek, aby przejść z ListBox do TextBox. Chodzi o to, że jeśli zostanie wybrany pierwszy element ListBox, a użytkownik wpisze w górę, to TextBox będzie się skupiał.

+0

Należy zauważyć, że nie jest to duplikat pytania, ponieważ powyższy problem powiązany dotyczy WPF. –

+0

Pytanie WPF ma ten sam problem, kluczowy zakres! –

+0

Jest grzeczny, aby zaznaczyć poprawną odpowiedź. –

Odpowiedz

7

Ah, podchwytliwe. Obsługa kluczowych wydarzeń nie jest zbyt oczywista. Oto, czego chcesz:

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(); 
} 

Powodzenia!

+0

To jest naprawdę miłe. Ale zdarzenie AcceleratorKeyActivated jest wyzwalane za każdym naciśnięciem klawisza, bez względu na to, która kontrola jest aktywna. Jak sprawdzić, czy lista jest aktywna? Stworzyłem nowe pytanie: https://stackoverflow.com/questions/25248486/check-if-listview-has- focus – PEK

Powiązane problemy