C# 在IEnumerable上使用可观察集合的利弊
我正在尝试决定是否要将所有的C# 在IEnumerable上使用可观察集合的利弊,c#,wpf,collections,ienumerable,observablecollection,C#,Wpf,Collections,Ienumerable,Observablecollection,我正在尝试决定是否要将所有的IEnumerable集合切换到可观察集合。我找不到一个很好的解释。从可以理解的角度来看,Observable Collection的优缺点是什么?我可能会这样回答您的问题:当您的集合更改内容时,是否需要通知您的应用程序?如果是这样,那么这样的改变可能是有理由的。我的理解是,可观察集合的总体特征是,当集合发生更改时,它们提供了一种通知机制,而IEnumerable只提供了一个迭代枚举器 我希望这会有所帮助。您可以决定将IEnumerable作为某些属性的类型,但使用O
IEnumerable
集合切换到可观察集合。我找不到一个很好的解释。从可以理解的角度来看,Observable Collection的优缺点是什么?我可能会这样回答您的问题:当您的集合更改内容时,是否需要通知您的应用程序?如果是这样,那么这样的改变可能是有理由的。我的理解是,可观察集合的总体特征是,当集合发生更改时,它们提供了一种通知机制,而IEnumerable只提供了一个迭代枚举器
我希望这会有所帮助。您可以决定将
IEnumerable
作为某些属性的类型,但使用ObservableCollection
作为实际值
如果您有这样的财产:
private IEnumerable<Something> collectionOfSomething;
public IEnumerable<Something> CollectionOfSomething
{
get { return collectionOfSomething; }
set
{
collectionOfSomething = value;
NotifyPropertyChanged("CollectionOfSomething");
}
}
可观察集合的全部要点是它们实现以下接口
INotifyCollectionChanged, INotifyPropertyChanged
这使得向UI/ViewModel发出更改警报并进行相应更新非常容易。如果未使用ObservateCollection,则需要您自己手动实现对集合/属性的更新。使用ObservateCollection的最大好处是它自动实现INotifyCollectionChanged和INotifyPropertyChanged,从而简化数据绑定。我想说的是,当您第一次设置数据绑定时,最好使用ObservableCollection 但现在您已经编写了一堆IEnumerables(并绑定了数据?),在这一点上没有任何节省
另一个要考虑的是<代码> VistabeCelpEng/<代码>是<代码> iNeXaby(继承自<代码>集合< /代码>)。由于
IEnumerable
是一个接口,它由许多类实现List
就是这样一个类-observedcollection
是另一个类。我喜欢@Clemens示例,它在代码中显示了数据绑定方面的差异。所以,也许你将来加入项目的所有人都可以从可观的集合中获益
我还没有限制他们。。。我在这方面遇到了问题,因为我必须使用另一个视图中的值,而我正在使用的视图无法看到该数据。我听说将其更改为可观察的集合可以修复它,但我仍然不能完全确定。。这里有一个链接到我之前的问题,导致这个问题。。。嗯,这真的很有帮助。。我可能会搞一段时间。它可能会解决我在IEnumerable上遇到的问题。谢谢\作为一个次要的旁注:可观测也实现了IEnumerable。它们还有一个额外的好处,那就是它们也可以设置为被UI监控。关闭了吗?我恭敬地不同意这一投票。这完全在FAQ中提到的“我希望其他人向我解释”的范围内,并确定OP要求解释的具体元素。有几个好的、详细的答案,我认为这表明“非建设性”的结论是不恰当的。投票重新开放。谢谢你@David W。我自己对它为什么关闭有点困惑。@JLott不客气。不知道它是否有用,但有时必须尝试:)
someViewModelObject.CollectionOfSomething = new MyVerySmartCollection<Something>();
INotifyCollectionChanged, INotifyPropertyChanged