2012-10-31 174 views
0

我提出了一個包含4個項目UI,BL,DAL和BO的解決方案。將ObservableCollection綁定到集合

  • UI:usercontrols,windows。
  • BL:一些邏輯和一個靜態類。
  • Dal:靜態類庫。
  • BO:我的對象(人,...)

第3個項目有參考BO項目,UI指和BL到DAL。 在BL項目中,我有一個收集,並在我的用戶界面(在ViewModel)我有一個ObservableCollection,問題是這兩個集合之間的綁定,例如,當我想添加一個人,我有這樣做:

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

它的工作原理,但我不知道這是否是最好的方法。

回答

0

您不應該每次都重新創建ObservableCollection。在這種情況下沒有意義,因爲ObservableCollection應該通知觀察者有關更改。當然,這是可行的,因爲Persons會發生變化,但對於較大的集合來說效率非常低,因爲它會像每個對象發生變化一樣起作用,但實際上只增加了一個新對象。

這是你最好:

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

順便說一句,我不喜歡這種型號/視圖模型的混合,這將是更好,如果你只公開的ViewModels視圖,乾淨多了,但這是一個不同的問題。

+0

感謝彼得的答案,如果你能告訴我更多關於Model/ViewModel混合? –

+0

如果'BL.Persons'也是一個ObservableCollection並且讓'this.Persons'成爲同一個實例,會不會更好?你會設置'this.Persons = BL.Persons'一次,現在只有一個集合而不是兩個。 – Clemens

+0

是的,這是一個好主意Clemens,但是如果我改變我的UI爲Winforms爲例,我也必須改變我的BL,這就是爲什麼我在BL和DAL中使用基本集合。 –

相關問題