private void preview_detail(object sender, RoutedEventArgs e)
{
VehicleFromAd vehicleFromAd = (VehicleFromAd)(sender as MenuItem).Tag;
NavigationService.Navigate(new Uri("/Preview.xaml?carId=" + vehicleFromAd.id, UriKind.Relative));
}
这里在xaml页面发生preview_detail点击事件时将跳转Preview.xaml页面
起初我代码是这么写的:
public partial class Preview : PhoneApplicationPage
{
private int carId ;
// 构造函数
public Preview()
{
InitializeComponent();
// 用于本地化 ApplicationBar 的示例代码
//BuildLocalizedApplicationBar();
if (NavigationContext.QueryString.ContainsKey("carId"))
{
carId = int.Parse(NavigationContext.QueryString["carId"]);
}
webBrowser1.Loaded += WebBrowser_OnLoaded;
}
//protected override void OnNavigatedTo(NavigationEventArgs e) {
// if (NavigationContext.QueryString.ContainsKey("carId"))
// {
// carId = int.Parse(NavigationContext.QueryString["carId"]);
// }
// webBrowser1.Loaded += WebBrowser_OnLoaded;
//}
private void WebBrowser_OnLoaded(object sender, RoutedEventArgs e)
{
webBrowser1.Source = new Uri("http://m.51auto.com/car_info.html?car_id="+carId, UriKind.Absolute);
}
结果在NavigationContext时发生了NullReferenceException异常,查阅相关资料才知道是 调用时机的问题,在 OnNavigatedTo 调用之后才会NavigationContext才有值。在page的构造函数里调用,太早了。
那咱就修改如下,一切如预期般靠谱,嘿嘿,没深入理解的后果!
public partial class Preview : PhoneApplicationPage
{
private int carId ;
// 构造函数
public Preview()
{
InitializeComponent();
// 用于本地化 ApplicationBar 的示例代码
//BuildLocalizedApplicationBar();
//if (NavigationContext.QueryString.ContainsKey("carId"))
//{
// carId = int.Parse(NavigationContext.QueryString["carId"]);
//}
//webBrowser1.Loaded += WebBrowser_OnLoaded;
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (NavigationContext.QueryString.ContainsKey("carId"))
{
carId = int.Parse(NavigationContext.QueryString["carId"]);
}
webBrowser1.Loaded += WebBrowser_OnLoaded;
}
private void WebBrowser_OnLoaded(object sender, RoutedEventArgs e)
{
webBrowser1.Source = new Uri("http://m.51auto.com/car_info.html?car_id="+carId, UriKind.Absolute);
}