Così ho lavorato a un progetto per animali domestici per Windows Store e ho avuto un po 'di inciampo: gli eventi di tastiera si rifiutano di sparare. Ho provato a forzare la messa a fuoco sulla pagina principale, ho cercato di forzare l'attenzione sulla griglia, ma nulla sembra aiutare. Qualcuno si imbatte in problemi come questo? Il mio google-fu mi ha fallito.Gli eventi della tastiera non vengono attivati nell'app RT
codice rilevante:
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
}
Questi eventi di tastiera vengono sollevati solo se i controlli hanno lo stato attivo. Se vuoi gestire tutti gli eventi chiave - usa il suggerimento di Igor per ottenerli dalla finestra principale. Altrimenti è necessario abilitare la messa a fuoco sui controlli e focalizzarli. –