更新列表视图的绑定导致对象引用未设置为对象的实例

时间:2015-04-22 06:10:19

标签: c# wpf wcf listview

我有WPF窗口视图,其中包含一个列表视图,该列表视图具有列表绑定。一切正常,直到我更新目标源,然后当从列表视图请求selecteditem时,我得到一个对象引用未设置为对象错误消息的实例。

下面的代码是创建一个wcf azure Web服务的新实例,并将其绑定到wpf中的listview。它工作得很好,所有行都包含正确的信息。

问题在于我想要更新新项目的来源。

ServiceReference1.Service1Client server = new ServiceReference1.Service1Client();

    public List<ServiceReference1.patient> PatientCollection
    {
        get
        {
                return server.getPatients().ToList();       
        }
    }

我使用定时器调度程序更新定时事件中的源代码。

  PatientListView.GetBindingExpression(ListView.ItemsSourceProperty).UpdateTarget();

但是当我想在更新后获得所选项目时,我得到了例外。

private void PatientListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {

        //TabControl1.SelectedIndex = 1;

        var item = (ServiceReference1.patient)PatientListView.SelectedItem;
        if (item.ews >= 5)
        {
            var theme = ThemeManager.DetectAppStyle(Application.Current);
            var accent = ThemeManager.GetAccent("Red");
            ThemeManager.ChangeAppStyle(Application.Current.Resources, accent, theme.Item1);
            ....not related code omitted...
        }

错误出现在 var item =(ServiceReference1.patient)PatientListView.SelectedItem;

任何更新选择更改方法中的内容的解决方案都将非常受欢迎。

1 个答案:

答案 0 :(得分:1)

您应该注意SelectedItem的{​​{1}}可以是ListView(也就是未选中)。所以你需要处理这种情况。

更改/替换ListView的绑定集合时可能会发生这种情况。

null

另外,您可以查看传递给您方法的var item = (ServiceReference1.patient)PatientListView.SelectedItem; if (item != null && item.ews >= 5) { // your code } ,以检查所选内容(SelectionChangedEventArgs)和所选内容(RemovedItems