2013-04-09 25 views
7

Vì vậy, tôi đã làm việc trên một dự án thú cưng cho Windows Store, và đã đạt một chút trở ngại: sự kiện bàn phím từ chối kích hoạt. Tôi đã cố gắng tập trung vào trang chính, cố gắng tập trung vào Grid, nhưng không có gì có vẻ hữu ích. Bất cứ ai gặp phải vấn đề như thế này? Google-fu của tôi đã thất bại.Sự kiện bàn phím không kích hoạt trong ứng dụng RT

đang liên quan:

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

Các sự kiện bàn phím này chỉ được nâng lên nếu các điều khiển của bạn tập trung. Nếu bạn muốn xử lý tất cả các sự kiện quan trọng - hãy sử dụng đề xuất của Igor để lấy chúng từ cửa sổ lõi. Nếu không, bạn cần phải cho phép tập trung vào các điều khiển và tập trung vào chúng. –

Trả lời

7

Làm thế nào về một cái gì đó như thế này:

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

trình đứng về phía tôi. Giải pháp found here.

+0

Không biết về CoreWindow, hoạt động như một sự quyến rũ, cảm ơn! –

Các vấn đề liên quan