在Windows Phone 8中传递参数并导航到另一个页面时获取异常

时间:2013-08-26 09:20:52

标签: c# windows-phone-7 windows-phone-8

我是Windows Phone 8开发的新手。

我在主页中有一个ListBox,一旦点击了一个列表项,基于所选项的id,我需要传递id并导航到下一页,

这是我的代码,

   public void ServerList_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        var current = ServerList.SelectedItem as readqueriesObject;

  NavigationService.Navigate(new Uri("/singlequery.xaml?selectedItem=" +current.Query_Id , UriKind.Relative));


        // Reset selected index to -1 (no selection)
        ServerList.SelectedIndex = -1;
    }

   public class readqueriesObject
    {
        public string Query_Id { get; set; }
        public string Query_Status { get; set; }
        public int count { get; set; }
        public List<object> historyList { get; set; }
        public string Query_Type { get; set; }
    }

这是我得到的例外,

  

“发生了'System.NullReferenceException'类型的异常   PhoneApp1.DLL但未在用户代码“

中处理

2 个答案:

答案 0 :(得分:1)

ServerList_SelectionChanged方法中,您获取当前选择,将其正确地转换为readqueriesObject,然后将该对象用作导航中的参数。在此之后,您将SelectedIndex设置为-1,这将导致新的SelectionChanged事件触发。

在第二个方法调用中,ServerList.SelectedItem将为null,因为您刚刚删除了选择,您的代码将失败。

尝试以下方法:

public void ServerList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    var current = ServerList.SelectedItem as readqueriesObject;
    if (current != null)
    {
        NavigationService.Navigate(new Uri("/singlequery.xaml?selectedItem=" +current.Query_Id , UriKind.Relative));
        // Reset selected index to -1 (no selection)
        ServerList.SelectedIndex = -1;
    }
}

答案 1 :(得分:0)

不要将所选索引分配给-1,因为它会对selectionChanged事件再次强制调用,该事件基本上是异常的根。而且,当您导航到另一个页面时,因此无需更改selectedindex属性。