我制作了一个包含4个项目的解决方案,UI,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);
它有效,但我不确定这是否是最佳方式。
答案 0 :(得分:0)
您不应该每次都重新创建ObservableCollection
。在这种情况下没有意义,因为ObservableCollection
应该通知观察者这一变化。当然这是有效的,因为Persons
会发生变化,但是对于较大的集合来说效率非常低,因为它会像每个对象一样发生变化,但实际上只添加了一个新对象。
这对你更好:
var person = new Person() { Name = "Paul"};
BL.Persons.Add(person);
this.Persons.Add(person);
顺便说一下,我不喜欢这种模型/ ViewModel混音,如果你只将 viewmodels 公开给你的视图会更好,但更干净,但是这是一个不同的问题。