2013-07-01 1 views
1

사용자가 뒤로 키를 눌렀을 때 종료를 확인하는 대화 상자를 표시하려고합니다. 네이티브 MessageBox를 사용하여이 작업을 수행 할 수 있다는 것을 알고 있습니다. 그러나 Winphone Toolkit에서 CustomMessageBox를 사용하면 취소 된 이벤트가 취소 된 후에 취소됩니다.뒤로 키를 눌러 응용 프로그램을 끝내기 전에 CustomMessageBox를 표시하십시오.

protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e) 
{ 
    e.Cancel = true; 
    CustomMessageBox messageBox = new CustomMessageBox() 
     { 
      Caption = "Exit", 
      Message = "Do you want to exit?", 
      LeftButtonContent = "Yes", 
      RightButtonContent = "No" 
     }; 
     messageBox.Dismissed += (s1, e1) => 
     { 
      switch (e1.Result) 
      { 
       case CustomMessageBoxResult.LeftButton: 
        //app doesn't exit as expected 
        e.Cancel = false; 
        break; 
       case CustomMessageBoxResult.RightButton: 
        break; 
       case CustomMessageBoxResult.None: 
        break; 
       default: 
        break; 
      } 
     };  
    messageBox.Show(); 
} 

이벤트를 취소하지 않으면 앱이 메시지 상자를 표시하지 않고 종료됩니다. Show를 호출하고 스레드를 잠그려고하면 messagebox가 표시되지 않습니다. 대신 Terminate 또는 Exception을 사용하여 응용 프로그램을 종료 할 수 있다는 것을 알고 있지만 Application_Closing을 호출 할 수 있도록 올바르게 종료해야합니다. 도와주세요! 감사.

답변

0

사용자 지정 메시지 상자를 사용하는 경우에는 다시 이벤트를 취소하는 것 외에 다른 선택의 여지가 없습니다. 그리고 당신이한다면, 당신은 언급 한 문제로 문법적으로 응용 프로그램을 종료해야합니다.

그 중 하나의 방법은 없습니다. CustomMessageBox가 해당 컨트롤을 표시 할 수 있도록 UI 스레드를 해제해야하며 해당 스레드는 OnBackKeyPress 이벤트를 종료 할 때까지 비어 있지 않습니다. 네이티브 메시지 상자에 충실하면 가장 좋습니다.

+0

응답에 대한 감사,하지만 난 당신이 강제로 응용 프로그램을 종료 한 후 다시 키 이벤트를 취소하는 것보다 다른 선택의 여지가 –

+0

@MadiShiva 그런 다음 빛을 테마로 반투명 화면 색상을 사용자 정의 할 CustomMessageBox를 사용할 필요가 당신이 언급 한 단점. 'Application_Closing'을 호출하지 않는 것이 유일한 걱정이라면 로직을 다른 메소드로 옮기기 위해 코드를 리팩토링 한 다음이 메소드를'Application_Closing'과 messagebox의 콜백 메소드 둘 다에서 호출하십시오 –

+0

그래, 그것이 있다면 유일한 방법 인 것 같습니다 다른 솔루션 없음 –

2

이 게시물을 발견하여 제 상황을 성공적으로 적용했습니다. Using the CustomMessageBox in OnBackKeyPressed

+0

공유 주셔서 감사하지만 그건 내 경우가 아니야. 내 문제는 CustomMessageBox를 표시 한 후 응용 프로그램을 올바르게 끝내기를 원한다는 것입니다. (Application_Closing을 트리거합니다). –

관련 문제