1

我有一个 ListView 通过类从数据库中提取数据。

我还使用 listView_SelectionChanged 来跟踪所选产品的名称。

 public void listView_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {

        var selected = LstView.SelectedItem as Product;

            string prodName = selected.ProductId.ToString();
            SelectedProductName.Text = prodName;



    }

如您所见,当 ListView 的行被选中时,我拉取 ProductId,将其存储在字符串 prodName 中,然后将其分配给 TextBlock SelectedProductName。在这一点上,当我点击 Go!按钮重新加载相同的列表,我在线收到错误:

 string prodName = selected.ProductId.ToString();

那说: System.NullReferenceException:'对象引用未设置为对象的实例。

4

1 回答 1

1

答案在评论中,这是为偶然发现这个问题的未来开发者发布的。

问题:当您重新加载列表时,所选项目变为空,因为不再选择任何内容。这导致您的变量“选择”为空,并且您无法访问空类的属性/方法。这样想吧。你买了一辆车(你的清单),你安装了一个新的触摸屏收音机(你选择了一个项目),你卖掉了汽车并买了一辆新的(你点击了重新加载列表的按钮),然后你试图改变旧车收音机上的电台

解决方案:

public void listView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    var selected = LstView.SelectedItem as Product;

    if (selected != null)
    {
        SelectedProductName.Text = selected.ProductId.ToString();
    }
    else
    {
        SelectedProductName.Text = "Default Product Name";
    }
}
于 2018-03-13T21:13:12.280 回答