2016-06-22 3 views
0

UWP로 앱을 만들고 있는데 화살표 키를 감지 할 방법이 필요합니다.창 안의 화살표 키 감지 UWP

"Window.Current.CoreWindow.CharacterReceived"를 사용하는 것과 같은 다른 방법이 있지만이 방법은 화살표 키를 감지하지 못합니다. 일부 도움이 pls?

감사합니다.

+0

http://stackoverflow.com/a/16996731/17034 –

+1

가능한 [PreviewKeyDo Windows 저장소 앱 목록 상자에 대한 wn] (http://stackoverflow.com/questions/16651616/previewkeydown-for-windows-store-app-listbox) – cybermonkey

답변

1

해결 방법은보기와 뷰에 포함 된 UI 컨트롤에 따라 다릅니다.

기본적으로 UI Control은 키보드에서 눌렀다 놓은 키를 구독하고 제어 할 수있는 이벤트가 KeyDownKeyUp입니다.

당신은 하나를 가지고에 따라 같은 뷰에 포커스가있는 객체를 추적해야하는 이벤트 핸들러가 호출되지 않을 수 있습니다 기본적으로

는 시각적 트리의 첫 번째 포커스 요소입니다 시스템에 의해 포커스가 주어진다. 사용자가 사용자가 레이아웃에서 해당 컨트롤을 직접 클릭하거나 탭하면 개별 컨트롤이 포커스를 얻거나 키 탭을 사용하여 컨텐트 영역 내의 탭 시퀀스로 들어갑니다. Control.Focus를 호출하여 포커스를 프로그래밍 방식으로 프로그래밍 할 수도 있습니다.

그래서 예를 들어, 윈도우의 KeyDown 이벤트에 등록 :

<Window x:Class="WpfApplication25.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525" 
    KeyDown="Window_KeyDown"> 
</Window> 

CS를

XAML

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    private void Window_KeyDown(object sender, KeyEventArgs e) 
    { 
     // ... Test for F5 key. 
     if (e.Key == Key.F5) 
     { 
     this.Title = "You pressed F5"; 
     } 
    } 
} 
+0

sais "이름 키가 현재 컨텍스트에서 존재하지 않습니다."그래서 사용했습니다. 가상 키,하지만 텍스트 상자에 집중한다면 키를 감지 할 수 있습니다. – Manueel