0

我正在为我的 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);
    }
4

2 回答 2

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;
    }

让我知道是否有更清洁的方法。

于 2011-09-06T14:10:14.993 回答
1

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

发布导致错误的代码?

于 2011-09-06T14:02:59.233 回答