即使NavigationService.CanGoBack
返回True
,NavigationService.GoBack()
也会抛出这些例外:
A first chance exception of type 'System.ArgumentException' occurred in System.Windows.dll
A first chance exception of type 'System.Reflection.TargetInvocationException' occurred in
这种情况在两种情况下系统地发生,而第三种情况正常:
NavigationService.GoBack()
OnNavigatedTo()
,则会崩溃
NavigationService.GoBack()
中WebException
引发HTTPWebRequest
而致电[1] NavigationService.GoBack()
获得结果,解析并显示结果时,我会调用HTTPWebRequest
。我的理论是,在从一个页面导航到另一个页面后,我无法过早地调用GoBack()
...我的问题:如果{{1>我以编程方式返回导航堆栈无法加载?
编辑:我决定以另一种方式做,但我认为我的问题可能是由于导航动画和Windows Phone C#Toolkit(我使用2011年2月版)
[1]关于案例2的代码详情:
我有一个简单的HTTPWebRequest
。我的回调就是这样做的,我的应用程序在飞行模式下崩溃了。 HTTPWebRequest
行负责,即使NavigationService.GoBack()
返回NavigationService.CanGoBack
。
true
我也尝试使用 try
{
response = request.EndGetResponse(result);
}
catch (WebException)
{
Dispatcher.BeginInvoke(() =>
{
NavigationService.GoBack();
});
}
。
答案 0 :(得分:0)
您可以尝试使用WebClient client = new WebClient();
,然后使用client.DownloadStringAsync(new Uri("request_url"));
发出请求并订阅client.DownloadStringCompleted
事件,以便在请求完成时接收您的数据。解析数据后,在事件处理程序中,您可以调用NavigationService.GoBack();
或转到您想要的任何页面。
此外,如果您尝试在OnNavigatedTo
事件中执行某些操作并遇到问题,可以尝试使用OnNavigatingFrom
代替(在上一页的ofc上),取消导航e.Cancel = true;
做你的请求和东西,然后获取应用程序框架并导航到e.Uri
(基本上继续您之前取消的导航)。
虽然这第二个也可能代表一个解决方案,但我认为第一个更好,因为它所有的工作都是async,因此不会阻止你的UI线程。这是我在我的应用程序中通常使用的内容。希望它有所帮助。