2012-05-06 27 views
0

我正在構建WPF應用程序,並在創建我的域模型時使用了ObservableCollection<T>
我只允許自己使用它,因爲它明顯屬於System.Collections.ObjectModel命名空間。
ObservableCollection爲什麼會有與用戶界面相關的限制?

執行期間我收到一個錯誤。我發現在SO一個線程的問題已經涉及在這裏:Where do I get a thread-safe CollectionView?

我的問題是:假設ObservableCollection<T>是System.Collections.ObjectModel命名空間,爲什麼它有一個用戶界面相關的限制嗎?這是架構缺陷還是意圖?在領域模型中使用它是不是很好的做法?

+0

這不是一個標題,那是一種疾病。 –

+2

這不是'ObservableCollection '的限制,這是WPF的限制。 – svick

+0

HB - 請接受我的appologies - 這是我第一次使用SO來提出一個問題 - 將在未來提高我的標題:) –

回答

2

我不認爲這是一個設計缺陷。我們在我們的WPF領域模型中使用它們。我們只是確保在我們更新可觀察集合的任何時候,我們都會在UI線程上這樣做。這很容易做到。我們還創建了自己的實現,以便每當我們更新可觀察集合時,我們都會禁用集合更新方法,直到添加或刪除所有項目。這極大地提高了綁定性能。

+0

但是如果我想更新非UI進程的集合會發生什麼?如果我的應用程序中沒有UI,會發生什麼情況 - 嘗試更新時是否會收到同樣的錯誤? - 如果是這樣,它顯然不屬於objectModel名稱空間。 –

+1

如果您沒有UI或非UI過程,爲什麼使用ObservableCollection?這些主要用於綁定到WPF UI對象。 –

+0

,因爲我希望在集合中發生更改時通知它的功能......它在域模型中非常有用。但如果它不是獨立的/在BL層中 - 我不會使用它。 –

相關問題