C# 如何检查WP7上的导航状态

C# 如何检查WP7上的导航状态,c#,silverlight,windows-phone-7,windows-phone-7.1,C#,Silverlight,Windows Phone 7,Windows Phone 7.1,我正在为我的WP7应用程序编写一个自动测试套件。目前,当我尝试在一行中执行多个命令时,它失败了,其中一个命令是导航命令,第二个命令是电子邮件任务 所以问题是,我如何确定WP7是否正在两个页面之间导航 编辑: 命令本身不是在代码隐藏中创建的,而是在一个单独的类中创建的 代码如下所示: 命令1: private void BuildContactCommand() { var contactCmd = new RelayCommand(() =>

我正在为我的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);
    }
private void BuildNavigateToDetailsCommand()
{
var navToDetailsCmd=新继电器命令
(
appId=>NavigateTo(“/Pages/AppDetails/AppDetailsPage.xaml?appId=“+appId”)
);
_AppCmdProvider.Register(navToDetailsCmd、CommandsNames.NavigateToDetailsCmd);
}

当您离开第一页时,应调用
OnNavigatedFrom
事件。但是如果您在调度程序上同时调度这两个任务,我认为不会发生任何错误


发布导致错误的代码?

当您离开第一页时,应调用
OnNavigatedFrom
事件。但是如果您在调度程序上同时调度这两个任务,我认为不会发生任何错误

发布导致错误的代码?

刚刚找到解决方案

    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;
    }
如果有更干净的方法,请告诉我。

刚刚找到了一个解决方案

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

如果有更干净的方法,请告诉我。

OnNavigateFrom是页面上的事件。我的代码不在代码隐藏页中。但是,如果它真的存在,这个解决方案应该是可行的。您明确地说它在两页之间;-)因此,我再次建议您发布失败的代码。:)忘了提及这一职责是在其他地方委派的。OnNavigateFrom是页面上的事件。我的代码不在代码隐藏页中。但是,如果它真的存在,这个解决方案应该是可行的。您明确地说它在两页之间;-)因此,我再次建议您发布失败的代码。:)忘了提到这一职责是在其他地方委派的。