WPF中的ObservableCollection和List表示

时间:2015-08-13 18:37:39

标签: wpf list data-binding observablecollection

我的解决方案包含两个项目。第一个项目连接到外部服务器并使用数据更新自己的结构。

在这个项目中,我有两个以下的课程:

class Quote
{... class fields}

class Quotes:IEnumerable<Quote>
{ List<Quote> list = new List<Quote>(); }

class Main
{
Quotes quotelist = new Quotes;
}

第二个项目就是UI,它旨在使用WPF在屏幕上显示第一个项目的数据。

为此,我创建了一个ObservableCollection

ObservableCollection<Quote> quotes =  new ObservableCollection<Quote>(quotelist);

然后,我将XAML中的引号绑定到网格。

它不起作用意味着不更新列表的更改。我想我可能会尝试在第一个项目中用List替换ObservableCollection,但如果可能的话,我宁愿不这样做。

最佳做法是什么?在我看到的所有示例中,列表(ObservableCollection)都是在ViewModel级别创建的。就我而言,列表是在较低级别创建和更新的。 如何使引号(ObservableCollection)知道对quotelist(List)的更改?我希望我的描述有意义。

1 个答案:

答案 0 :(得分:0)

然后,您必须以某种方式允许第一个项目通知第二个项目,列表中的内容已更改,并且ObservableCollection需要更新/刷新。 我建议使用以下三种方法之一:

  • 在第一个项目中创建一个事件,让第二个项目使用更新可观察集合的事件处理程序订阅该事件
  • 在第一个项目中创建一个委托属性,并在第二个项目中附加一个方法/ lambda,它将更新可观察的集合
  • 让您的Quotes类实现INotifyCollectionChanged接口并直接绑定到它