WPF ObservableCollection和List Box.itemssource异常

时间:2013-08-14 19:35:34

标签: wpf binding listbox observablecollection itemsource

编辑整篇文章以澄清......我似乎无法指出:

BackgroundWorker从作为对象列表的WCF服务接收数据。服务引用配置为ObservableCollection。

我通过委托将ObservableCollection传递到我的主UI线程,并将其设置为等于UI线程Local Collection。

列表框绑定到此本地集合,不会更新。我已将以下内容添加到我的收藏中:

public ObservableCollection<EmployeeData> _empData { get; set; }

public event PropertyChangedEventHandler PropertyChanged;

public ObservableCollection<EmployeeData> EmpData
    {
        get { return _empData ; }
        set
        {
            _empData = value;
            OnPropertyChanged("EmpData");
        }
    }

private void OnPropertyChanged(string p)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
            handler(this, new PropertyChangedEventArgs(p));
    }

这甚至会触发,但PropertyChanged始终为null。我的XAML列表框的绑定声明为:

ItemsSource="{Binding Path=EmpData}"

无论我做什么EmpData更新但ListBox没有,我已经尝试了其他几种方法,但是在列表框中没有任何变化,它总是只是null。

我已经在这一天工作了一天以上,我似乎无法通过'点击'获得这个全自动更新的东西。

1 个答案:

答案 0 :(得分:0)

我不确定我到底知道你在做什么,但这里有一些建议。

  • 有一个ObservableCollection
  • 将您的itemcollection(或列表框或其他内容)绑定到此
  • 根据用户的不同,清除并用列表数据填充observablecollection
  • 如果有任何更改,请让后台工作人员更新列表并刷新可观察集合。

理想情况下,您的EmployeeData类将实现INotifyPropertyChanged接口,以便在您的视图中自动更新属性更改。