c# - 在 IEnumerable 上使用 Observable 集合的优缺点

标签 c# wpf collections ienumerable observablecollection

我正在尝试决定是否要将所有 IEnumerable 集合切换到 Observable 集合。我找不到很好的解释。 Observable 集合的优点和缺点是什么?

最佳答案

您可以决定使用 IEnumerable<Something>作为某些属性的类型,但使用 ObservableCollection<Something>作为实际值。

如果你有这样的属性(property):

private IEnumerable<Something> collectionOfSomething;
public IEnumerable<Something> CollectionOfSomething
{
    get { return collectionOfSomething; }
    set
    {
        collectionOfSomething = value;
        NotifyPropertyChanged("CollectionOfSomething");
    }
}

现在您可以像这样简单地分配给该属性

someViewModelObject.CollectionOfSomething = new ObservableCollection<Something>();

当您分配或绑定(bind)到集合属性(例如 ItemsControl.ItemsSource )时,目标对象通常会检查实际属性值是否实现了 INotifyCollectionChanged (ObservableCollection 做什么)并附上一个 CollectionChanged处理程序以获取有关源集合更改的通知。

如果您稍后决定对 INotifyCollectionChanged 进行一些其他更智能的实现您不需要更改所有属性类型。只需用这样的东西替换作业

someViewModelObject.CollectionOfSomething = new MyVerySmartCollection<Something>();

关于c# - 在 IEnumerable 上使用 Observable 集合的优缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14837834/

相关文章:

c# - C# Regex 如何捕获 *| 之间的所有内容?和 |*?

wpf - 将 WPF 网页浏览器控件设置为使用 IE10 模式

wpf - 更改 WPF DocumentViewer 查看模式

斯卡拉 `view` : `force` is not a member of `Seq`

java - 对集合性能提示列表进行排序

java - 具有最快(并发)添加操作的集合

c# - 发布 Web 应用程序失败

c# - 如何创建自定义日历以在单击按钮时仅显示特定月份,而没有星期六和星期日?

wpf - 在 MouseUp WPF 上选择 ListBoxItem

c# - 使用 .net C# 在 SNMP 项目上编码错误