Как проверить статус навигации на WP7 - PullRequest
0 голосов
/ 06 сентября 2011

Я пишу автоматизированный набор тестов для моего приложения 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);
    }

Ответы [ 2 ]

3 голосов
/ 06 сентября 2011

Только что нашел решение.

    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 голос
/ 06 сентября 2011

Событие OnNavigatedFrom должно вызываться, когда вы покидаете первую страницу. Но если вы запланируете и то, и другое на диспетчере, я не думаю, что могут возникнуть какие-либо ошибки.

Опубликовать код, который вызывает ошибку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...