将ObservableCollection绑定到集合

时间:2012-10-31 11:39:17

标签: wpf mvvm observablecollection

我制作了一个包含4个项目的解决方案,UI,BL,DAL和BO。

  • UI:usercontrols,windows。
  • BL:一些逻辑和一个静态类。
  • Dal:一个静态类库。
  • BO:我的对象(人,...)

前3个项目参考BO项目,UI参考BL和BL到DAL。 在BL项目中我有一个集合,在我的UI(在一个ViewModel中)我有一个 ObservableCollection ,问题是这两个集合之间的绑定,例如,我想添加一个人,我必须这样做:

BL.Persons.Add( new Person() { Name = "Paul"});
this.Persons = new ObservableCollection<Person>(BL.Persons);

它有效,但我不确定这是否是最佳方式。

1 个答案:

答案 0 :(得分:0)

您不应该每次都重新创建ObservableCollection。在这种情况下没有意义,因为ObservableCollection应该通知观察者这一变化。当然这是有效的,因为Persons会发生变化,但是对于较大的集合来说效率非常低,因为它会像每个对象一样发生变化,但实际上只添加了一个新对象。

这对你更好:

var person = new Person() { Name = "Paul"};
BL.Persons.Add(person);
this.Persons.Add(person);

顺便说一下,我不喜欢这种模型/ ViewModel混音,如果你只将 viewmodels 公开给你的视图会更好,但更干净,但是这是一个不同的问题。