2009-06-05 2 views

답변

1

(사실상) 다시 만나서 반가워요.

루트 UserControl 요소에서 배선 KeyDown을 이미 시도했다고 가정합니다. 다음은 몇 가지 팁입니다.

  • 플러그인은 키 이벤트를보기 전에 집중해야합니다. 플러그인을 시작하려면 사용자가 강제로 클릭해야합니다.

  • 화살표 키 이벤트를 먹는 다른 요소 (예 : ScrollViewer)가 없는지 확인하십시오. 재생중인 ScrollViewer가있는 경우 KeyUp 만 보입니다.

  • 전체 화면 모드로 전환하지 않습니다.

간단한 누락 된 항목이어야합니다. 희망이 도움이됩니다.

+0

나는 내가이 함정을 모두 피할 것 같아요. 여기에 내 코드입니다 : 네임 스페이스 ClickTheButton { \t 공공 부분 클래스 레벨 10 : UserControl을 \t { \t \t 공공 레벨 10() \t \t { \t \t \t // 필수 (변수 에게 \t \t \t의 InitializeComponent를 초기화하는); \t \t \t로드 됨 + = 새 RoutedEventHandler (Level10_Loaded); \t \t} \t \t 공극 Level10_Loaded (객체 송신자 RoutedEventArgs E) \t \t \t \t { \t이 LayoutRoot.KeyDown + = 새 KeyEventHandler (LayoutRoot_KeyDown); \t \t} \t \t 공극 LayoutRoot_KeyDown (객체 송신자 KeyEventArgs E) \t \t \t \t { \t (e.Key == Key.Right) \t \t \t \t { \t \t \t // 않으면 이 열쇠는해야한다고. \t \t \t} \t \t} \t} } –

+1

와우 잘 붙여 + 잘라하지 않습니다. –

+0

여기에 KeyDown 이벤트 핸들러를 연결합니다 : LayoutRoot.KeyDown + = 새 KeyEventHandler (LayoutRoot_KeyDown); 그리고 이벤트 처리 메소드에서 e의 Key 값을 평가하려고합니다. 그러나, 내 이벤트 처리 메서드를 호출 한 적이있다 결코 (그리고 난 내 Silverlight 응용 프로그램에 초점을 확신 해요.) –

0

루트 Grid에서 KeyDown 및/또는 KeyUp 이벤트를 처리하십시오.

0

Silverlight 2는 KeyUp 및 KeyDown 이벤트를 지원합니다 (KeyPress는 아님).

이 이벤트에서는 KeyEventArgs 개체를 매개 변수로 가져옵니다. 이것으로부터 KeyCode 또는 KeyData를 취득 할 수 있습니다.

0

이 문제와 관련된 다른 포럼의 몇 가지 스레드를 검토 할 때 페이지 (루트) 요소에서 키 이벤트를 처리하고 원하는 효과를 위해 키를 구문 분석 한 다음 특정 컨트롤로 명령을 리디렉션하는 것이 가장 좋습니다 .

페이지

this.KeyDown += (s, e) => 
    { 
     MyControl control = (MyControl)Layoutroot.FindName("controlname"); 
     if(control != null) 
     { 
      control.MyPublicFunction(e.Key); 
     } 
    }; 

MyControl

public MyPublicFunciton(Key pressedKey) 
{ 
    if(pressedKey == Key.Enter) 
    { 
     //Do something 
    } 
} 
관련 문제