2014-09-04 4 views
0

MvvmCross를 사용하여 Windows Phone 앱 (WinRT를 사용하여 8.1)을 만들고 있습니다. ShowViewModel()을 사용하여 새보기로 이동합니다. 그러나 전화의 뒤로 버튼을 누르면 앱이 첫 번째보기로 돌아 가기보다는 닫힙니다. 어떻게 할 수 있습니까? 뒤로 버튼을 눌렀을 때 첫 번째보기로 돌아가고 싶습니다.Windows Phone 앱의 MvvmCross와 뒤로 버튼

+0

http://msdn.microsoft.com/en-us/library/windows/apps/xaml/dn639128.aspx의 Win (P) RT 앱의 뒤로 버튼에 대한 몇 가지 조언이 있습니다. - 'HardwareButtons_BackPressed'코드 포함 App.xaml.cs 파일 – Stuart

답변

4

backbutton 이벤트를 사용하여 내 viewmodel의 인터페이스를 사용하도록 해결 한 다음 클라이언트의 특정 구현을 작성했습니다. viewmodel에서 이벤트를 처리하고 내 기본 클래스 인 MvxViewModel에서 close 메서드를 호출했습니다. 블로그에서 내 솔루션에 대한 자세한 내용을 읽어보십시오. http://danielhindrikes.se/windows-phone/handle-windows-phone-back-button-pressed-when-using-mvvm/

3

다음은 더 간단한 해결책입니다. MvxWindowsPage에서 파생 된 모든 WP 페이지의 기본 유형을 만듭니다. 그런 다음 VM에 적절한 정보가 BACK 키를 처리하고 경로 :

public abstract class MyBaseView : MvxWindowsPage { 
    public MyBaseView() { 
     this.InitializeComponent(); 
     HardwareButtons.BackPressed += HardwareButtons_BackPressed; 
    } 

    void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e) { 
     if (Frame.CanGoBack) { 
      var vm = ViewModel as MyBaseViewModel; 
      if (vm != null) { 
       e.Handled = true; 
       vm.GoBackCommand.Execute(null); 
      } 
     } 
    } 
} 

이제, 당신은 또한 당신이 MvxViewModel에서 파생되는 기본 뷰 모델을 가지고있는 귀하의 모든 VM을 도출 있는지 확인해야합니다. 해당 기본 VM에는 GoBackCommand 관찰 가능 속성이 있어야하며 해당 명령을 실행하면 간단한 Close (this)를 수행해야합니다. Windows Phone 8.1 Universal App terminates on navigating back from second page?

편집 고정 선언 :

이 관련 질문을 참조하십시오 후드 아래에 무슨 일이 일어나고 있는지 참조하십시오.

관련 문제