C# 如何检查WP7上的导航状态
我正在为我的WP7应用程序编写一个自动测试套件。目前,当我尝试在一行中执行多个命令时,它失败了,其中一个命令是导航命令,第二个命令是电子邮件任务 所以问题是,我如何确定WP7是否正在两个页面之间导航 编辑: 命令本身不是在代码隐藏中创建的,而是在一个单独的类中创建的 代码如下所示: 命令1: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(() =>
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是页面上的事件。我的代码不在代码隐藏页中。但是,如果它真的存在,这个解决方案应该是可行的。您明确地说它在两页之间;-)因此,我再次建议您发布失败的代码。:)忘了提到这一职责是在其他地方委派的。