我正在为我的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);
}
答案 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
事件。但如果您在调度员上安排两者,我认为不应该发生任何错误。
发布导致错误的代码?