我是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但未在用户代码“
中处理
答案 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属性。