有没有一种有效的方法来提供实现INotifyCollectionChanged的Enumarable<SomeType>或集合,但只能从提供类的内部进行更改。
下面的示例说明了我的意思,但有一个缺点,即调用者可以转换回IEnumerable<SomeType>,然后操作我的内部集合,这是我真正不喜欢的:
public class DemoClass{
ObservableCollection<SomeType> m_collection=
new ObservableCollection<SomeType>();
public IEnumerable<SomeType> SomeTypeInstances{
get{return m_collection;}
}
private void AMethod(){
// Here I can work with m_collection
}
}有没有一种简单的方法,也许是使用ObservableCollection,或者有必要编写一个包装器来实现IEnumerable<SomeType>和INotifyCollectionChanged,然后将收集更改的evnets转发到目的地?
发布于 2010-07-29 03:57:29
使用ReadOnlyObservableCollection。
发布于 2010-07-29 03:59:42
如果你返回内部集合,那么他们总是可以扰乱你的数据。您可以只给用户一个ReadOnlyCollection<T>,它是内部数据的克隆。这样,他们就可以访问数据,您的数据就不会有被破坏的风险。
https://stackoverflow.com/questions/3356896
复制相似问题