"쉬운"대답이있을 것입니다. 그러나 지금은 저를 벗어납니다.컬렉션에 항목 추가 사용 안 함
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
}
물론! 고맙습니다! –
그는 사람들이 아무것도 추가하지 않기를 바랄 뿐이다. 대신, 그는 사람들이 아이템을 추가 할 수 있기를 원하지만 자신의 커스텀 메소드를 통해서만 가능합니다. –
@Justin Niessner :하지만 원래 컬렉션에 대한 참조를 유지하는 한 괜찮을까요? 실제로 시도하지는 않았지만 이것은 MSDN 페이지에서 인용 한 것입니다. * 기본 컬렉션에 변경 사항이있는 경우 읽기 전용 컬렉션은 해당 변경 사항을 반영합니다. * –