Ben*_*ter 3 wpf observablecollection
在 WPF 应用程序中,我有一个 ListView 绑定到我的 ViewModel 上的 ObservableCollection。
在应用程序运行期间,我需要删除并重新加载集合中的所有项目。我永远不需要添加或删除单个项目。
这提示了一个问题,ObservableCollection 是否真的必要,我是否可以将 ListView 绑定到 IEnumerable 并在替换集合时调用 OnPropertyChanged?
由于 ObservableCollection 没有 AddRange 方法,重新加载而不替换集合的唯一方法是单独添加每个项目。由于为每个添加的项目触发 CollectionChanged,这是否可能对性能有任何重大影响?
最后,由于我使用 ICollectionView 来同步当前选定的项目,如果我确实替换了集合,我是否需要再次调用 CollectionViewSource.GetDefaultView?我假设我可以重用现有的 CurrentChanged 处理程序。
谢谢本
我会说你的直觉是正确的:如果你从不添加或删除单个项目,但总是替换整个列表,并且你相当确定需求不会改变,那么你最好使用非-可观察列表(或 IEnumerable)和 INotifyPropertyChanged。
如果列表很大,这将使您获得一些速度。但最大的好处是可读性:它会更清楚地表达你的意图。下一个维护您代码的人不会四处寻找所有可以从 ObservableCollection 中添加和删除元素的代码;他们将能够快速而清楚地看到您总是更换整个列表。
| 归档时间: |
|
| 查看次数: |
2795 次 |
| 最近记录: |