如何检查WP7上的导航状态

时间:2011-09-06 14:00:15

标签: c# silverlight windows-phone-7 windows-phone-7.1

我正在为我的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 个答案:

答案 0 :(得分: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 :(得分:1)

当您离开第一页时,应调用OnNavigatedFrom事件。但如果您在调度员上安排两者,我认为不应该发生任何错误。

发布导致错误的代码?