0

我是 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; }
    }

这是我得到的例外,

“PhoneApp1.DLL 中发生了‘System.NullReferenceException’类型的异常,但未在用户代码中处理”

4

2 回答 2

1

在您的ServerList_SelectionChanged方法中,您获取当前选择,将其正确转换为 a 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;
    }
}
于 2013-08-26T09:57:52.590 回答
0

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

于 2013-08-26T10:13:13.587 回答