WPF*_*-it 14 wpf bindinglist observablecollection
我也在MSDN论坛上问过这个问题... http://social.msdn.microsoft.com/Forums/en/wpf/thread/4493988a-9bd8-48fe-aff0-348502136a80
我需要知道为什么微软建议WPF中BindingList没有正确支持...
BindingList在WPF 中没有用的是什么?我发现它非常实用.到目前为止,我个人没有发现BindingList任何较慢或内存负载较多.
另外WPF ItemsControls,ItemsTemplates,Styles,Hierarchies工作的伟大与BindingList太迟了.他们同样可以观察到.
作为一个自己的核心WPF开发者和ObservableCollection粉丝,我的信念被一个曾经完成的事情所震撼BindingList....
我为什么要使用ObservableCollectionBindingList?(保留INotifyPropertyChanged,它们都必须实现项目属性更改)
Ste*_*olt 16
这可能是有趣的:
http://www.themissingdocs.net/wordpress/?p=465
最重要的段落:
但是实现不会扩展,它很慢,它对较大的列表执行得非常糟糕.如果您的元素类型支持INotifyPropertyChanged,则每当其中一个元素引发属性更改事件时,就会遍历整个列表以计算引发事件的项列表中的索引!当我第一次意识到这一点时,我很震惊.你看到BindingList真的只是Collection的一个相当薄的包装器,因此没有与每个条目相关联的元数据,元素PropertyChanged事件的所有绑定都被定向到一个处理程序,并且所有它被赋予的是源和名称已更改的属性,因此无法在不进行搜索的情况下在ListChangedEventArgs中包含NewIndex参数.(默认情况下,此搜索甚至使用默认对象比较器,因此如果您的列表中碰巧有两个不同但有时相同的对象,请欣赏结果...)
另一个注意事项 - AddNew,BindingList的另一个功能,Collection不具备这个功能 - 也不能扩展.它必须使用IndexOf来找出列表中新添加的项目最终的位置,以防它需要取消添加,因为它支持派生类型中的自动排序.(BindingList不支持自动排序...)
| 归档时间: |
|
| 查看次数: |
9091 次 |
| 最近记录: |