我確定對此有一個「簡單」的答案,但目前它逃脫了我。禁用向集合添加項目
在MVVM應用程序中,我有一個ObservableCollection屬性,用於在視圖上顯示一些元素集。
private readonly ObservableCollection<MyType> mMyCollection =
new ObservableCollection<MyType>();
public ObservableCollection<MyType> MyCollection
{
get { return mMyCollection; }
}
我想限制此集合的消費者從簡單的使用屬性添加到集合(即我要防止這種觀點):
viewModel.MyCollection.Add(newThing); // want to prevent this!
相反,我想迫使使用方法添加項目,因爲可能會有另一個線程使用該集合,並且我不想在該線程處理它時修改集合。
public void AddToMyCollection(MyType newItem)
{
// Do some thread/task stuff here
}
但當然!謝謝! – 2010-06-09 14:24:30
這隻有在他不希望人們添加任何東西時纔有效。相反,他希望人們能夠添加項目...但只能通過他的自定義方法。 – 2010-06-09 14:24:51
@Justin Niessner:但只要他保持對原始集合的引用應該沒問題?我沒有真正嘗試過,但這是MSDN頁面的引用:*如果對底層集合進行了更改,只讀集合反映了這些更改* – 2010-06-09 14:26:55