2013-04-09 9 views
7

So habe ich an einem Haustier Projekt für den Windows Store gearbeitet, und haben ein bisschen ein Stolperstein getroffen: Tastatur Ereignisse verweigern zu schießen. Ich habe versucht, den Fokus auf die Hauptseite zu lenken, habe versucht, den Fokus auf das Raster zu legen, aber nichts scheint mir zu helfen. Ist jemand auf solche Probleme gestoßen? Mein Google-Fu hat mich im Stich gelassen.Tastatur Ereignisse nicht feuern in RT App

Relevante Code:

XAML:

<Page 
    x:Class="PlatformTD.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:PlatformTD" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d"> 

    <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}" 
      Name="LayoutRoot"> 
     <Canvas HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 
       Name="MainCanvas" x:FieldModifier="public" 
       SizeChanged="MainCanvas_SizeChanged" 
       Loaded="MainCanvas_Loaded" /> 
    </Grid> 
</Page> 

C#:

public MainPage() 
{ 
    this.InitializeComponent(); 
    MainCanvas.KeyDown += MainPage_KeyDown; 
    MainCanvas.KeyUp += MainPage_KeyUp; 
    KeyDown += MainPage_KeyDown; 
    KeyUp += MainPage_KeyUp; 
    LayoutRoot.KeyDown += MainPage_KeyDown; 
    LayoutRoot.KeyUp += MainPage_KeyUp; 
} 
private void MainPage_KeyUp(object sender, KeyRoutedEventArgs e) 
{ // breakpoint here to catch when event fires 
    // does stuff 
} 
private void MainPage_KeyDown(object sender, KeyRoutedEventArgs e) 
{ // breakpoint here to catch when event fires 
    // does stuff 
} 
+0

Diese Tastaturereignisse werden nur ausgelöst, wenn Ihre Steuerelemente den Fokus haben. Wenn Sie alle wichtigen Ereignisse behandeln möchten, verwenden Sie den Vorschlag von Igor, um sie aus dem Hauptfenster zu holen. Andernfalls müssen Sie den Fokus auf die Steuerelemente aktivieren und ihnen den Fokus geben. –

Antwort

7

Wie wäre es etwa so:

public MainPage() 
{ 
    this.InitializeComponent(); 
    Window.Current.CoreWindow.KeyDown += CoreWindow_KeyDown; 
    Window.Current.CoreWindow.KeyUp += CoreWindow_KeyUp; 
} 

void CoreWindow_KeyUp(Windows.UI.Core.CoreWindow sender, Windows.UI.Core.KeyEventArgs args) 
{ 
    throw new NotImplementedException(); 
} 

void CoreWindow_KeyDown(Windows.UI.Core.CoreWindow sender, Windows.UI.Core.KeyEventArgs args) 
{ 
    throw new NotImplementedException(); 
} 

Arbeiten auf meiner Seite. Lösung found here.

+0

Wusste nicht über CoreWindow, funktioniert wie ein Zauber, danke! –