2011-09-06 5 views
0

내 WP7 앱용 자동화 테스트 스위트를 작성 중이다. 현재 하나의 명령이 탐색 명령이고 두 번째 명령이 전자 메일 작업 인 행에서 여러 명령을 실행하려고하면 오류가 발생합니다.WP7에서 내비게이션 상태를 확인하는 방법

그럼 WP7이 두 페이지 사이를 탐색 중인지 어떻게 확인해야합니까?

편집 :

명령 자체는하지 뒤에있는 코드에서하지만 별도의 클래스에 생성됩니다.

코드는 다음과 같습니다

명령 1 :

private void BuildContactCommand() 
    { 
     var contactCmd = new RelayCommand(() => 
               // Command 
               { 
                var ecTask = new EmailComposeTask(); 
                // composing message here 

                // Command fails here 
                ecTask.Show(); 
               }, 
               // Can Execute 
              () => !_isNavigating 
             ); 
     _appCmdProvier.Register(contactCmd, CommandsNames.ContactSupportCmd); 
    } 

명령 2 : 첫 번째 페이지를 떠날 때

private void BuildNavigateToDetailsCommand() 
    { 
     var navToDetailsCmd = new RelayCommand<string> 
      (
       appId => NavigateTo("/Pages/AppDetails/AppDetailsPage.xaml?appId=" + appId) 
      ); 
     _appCmdProvier.Register(navToDetailsCmd, CommandsNames.NavigateToDetailsCmd); 
    } 

답변

3

해결책을 찾았습니다.

private void TrackNavigationStatus() 
    { 
     var root = Application.Current.RootVisual as PhoneApplicationFrame; 

     root.Navigating += (s, e) => _isNavigating = true; 
     root.Navigated += (s, e) => _isNavigating = false; 
     root.NavigationFailed += (s, e) => _isNavigating = false; 
     root.NavigationStopped += (s, e) => _isNavigating = false; 
    } 

더 깨끗한 방법이 있다면 알려주십시오.

1

OnNavigatedFrom 이벤트를 호출해야합니다. 하지만 디스패처에서 둘 다 예약하면 오류가 발생하지 않을 것이라고 생각합니다.

오류의 원인이되는 코드를 게시 하시겠습니까?

+0

OnNavigateFrom은 페이지의 이벤트입니다. 그리고 내 코드는 페이지 뒤에서 코드에 없습니다. 그러나 거기에 있다면,이 해결책이 효과가있다. – Vitalij

+0

명시 적으로 두 페이지 사이에 썼다 ;-) 다시 말하지만, 실패한 코드를 게시하는 것이 좋습니다. –

+0

:)이 책임은 다른 곳에서 위임되었음을 언급하는 것을 잊어 버렸습니다. – Vitalij

관련 문제