티스토리 뷰

반응형

질문내용

 

윈폰에서 첫페이지에서 백버튼 눌렀을 때 HardwareButtons.BackPressed 이벤트 잡은 다음에, Yes/No로 앱 종료할지 말지 하게 하려면 어떻게 해야 하나요? 이렇게 했더니 묻기만 하고 바로 종료해 버리네요. 좀 기다려 주지...

 

Munchan Park 비동기호출을하고있기때문에 프로세스사 다음으로 넘어가서 종료되네요 동기호출로 바꾸시면될것같아용
  • Reagan Hwang async await 안 걸어도 넘어가고 걸어도 넘어가고...
  • Youngjae Kim msg.ShowAsync().Wait(); 하면 어떻게 되나요? 여하간 이건 Jongin Lee 님 전문이실 듯 ㅋㅋ
  • Jongin Lee 음 잘은 모르겟지만 CanGoBack일때 거의 다 true여서요 대부분의 코드들이 e.Handled = true; Frame.GoBack();으로 흘러갈 것 같네요ㅋ
  • Jongin Lee 뒤에 코드를 Frame.CanGoBack 안에다가 넣으심이
  • Reagan Hwang 아 첫페이지에서는 CanGoBack이 false에요.
  • Reagan Hwang 첫페이지 피봇에서 기본 아닌 피봇아이템을 보고 있을 때 습관적으로 백버튼 눌러서 종료하는 문제가 있었는데, 백버튼 이벤트 캐치해서 앱 종료 안하고 기본 피봇 뷰로 돌리는 방법으로 해결했어요.
  • Jongin Lee 아 근데 아마도 Invoked 안에 e.Handled를 넣어서 그런 것 같아요
  • Yunjin Han 혹은 e.handled는 무조건 true로 하고, ok 일 때만 App close를 호출하는것도 괜찮지 않을까요
  • Munchan Park async void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
    {


    e.Handled = true;
    if (this.Frame.CanGoBack)
    {
    Frame.GoBack();
    }
    else
    {
    var msg = new MessageDialog("Confirm Close");
    var okBtn = new UICommand("OK");
    var cancelBtn = new UICommand("Cancel");
    msg.Commands.Add(okBtn);
    msg.Commands.Add(cancelBtn);
    var result = await msg.ShowAsync();

    if (result != null && result.Label == "OK")
    {
    App.Current.Exit();
    }
    }
    }
  • Munchan Park 이 이벤트 핸들러는 await가 있어도 기다리지 않고 그냥 종료를 시켜버리내요..음..그래서 처음에 무조건 핸들러를 true로 지정하고 시작하면, await가 끝날때까지 다음으로 넘어가지 않습니다.
  • Reagan Hwang App.current.exit라는 메소드가 있었군요! 굿...
  • 반응형
    댓글