2012-12-04 6 views
0

저는 기본적으로 텍스트 필드와 결과 목록이있는 단일 페이지 검색 응용 프로그램입니다. 이 애플리케이션은 하나의 페이지로만 구성되므로 휴대 전화의 하드웨어 백 버튼을 탭하면 내 앱이 종료되고 사용자가 시작 앱으로 이동합니다.역방향 탐색을 무시할 수 있습니까?

이 표준적인 동작을 어떻게 든 무시할 수 있다면이 동일한 페이지의 이전 성공한 검색 결과로 사용자를 이동시킬 수있는 방법으로이 표준 동작을 대체 할 수 있다면 사용자에게 훨씬 더 만족할 것이라고 생각합니다. 정상적인 백이하는 것처럼 앱을 종료합니다).

질문이 경우 다시 탐색을 무시할 수 있습니까? 그렇다면 어떻게됩니까?

답변

1

당신은 당신의 페이지에 OnBackKeyPress 방법을 재정 의하여 다시 하드웨어 키 누름을 잡을 수 있습니다 . 페이지를 종료하는 대신 내부 조치를 수행하려는 경우를 감지 할 수 있습니다.

This is documented on MSDN here.

protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e) 
    { 
     if (...) 
     { 
      // don't want to exit the app in this case 
      e.Cancel; 
     } 

     base.OnBackKeyPress(e); 
    } 

는 그러나 다시 키를 사용하여 응용 프로그램을 종료 아프게하지 않는, 또는 다른 응용 프로그램 마켓 플레이스 인증을 실패 할 수 있는지 확인하기 위해주의해야합니다.

+0

감사합니다. – Anton

0
protected virtual void OnNavigatingFrom(
    NavigatingCancelEventArgs e 
) 

재정의 페이지 에 OnNavigatingFrom와 할 e.Cancel = 사실

protected override void OnNavigatingFrom(NavigatingCancelEventArgs e) 
{ 
e.Cancel = true; 
//Other code 

} 

http://msdn.microsoft.com/en-us/library/ms607458(vs.95)

+0

난 다시 버튼에서 오는이 선택이 아닌 이벤트로 간주 한이 uncancellable으로 표시됩니다. – Anton

+0

그냥 에뮬레이터에서 이것을 시도했지만 실제로이 이벤트를 취소해도 아무 효과가 없습니다. – Anton

0

이 작업을 수행해야합니다

protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e) 
{ 
e.Cancel = MessageBox.Show("Exit?", "Page", MessageBoxButton.OKCancel) != 
MessageBoxResult.OK; 
base.OnBackKeyPress(e); 
} 
관련 문제