0

编辑整个帖子以澄清......我似乎无法确定这一点:

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 始终为空。我的 XAML 列表框有一个绑定声明为:

ItemsSource="{Binding Path=EmpData}"

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

我已经为此工作了一天多,我似乎无法让整个自动更新的东西“点击”。

4

1 回答 1

0

我不确定我是否完全理解您在做什么,但这里有一些建议。

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

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

于 2013-08-14T22:02:33.373 回答