如何制作一个网站包含多个网页,营销推广型网站公司,seo网站建设是什么,做海报网站文章目录前言一、核心概念简介ObservableCollectionList二、关键差异对比三、典型使用场景ObservableCollection 的适用场景List 的适用场景四、在Community Toolkit MVVM中使用ObservableCollectionData和ListData场景1#xff1a;动态列表#xff08;Obser…
文章目录前言一、核心概念简介ObservableCollectionList二、关键差异对比三、典型使用场景ObservableCollection 的适用场景List 的适用场景四、在Community Toolkit MVVM中使用ObservableCollectionData和ListData场景1动态列表ObservableCollection场景1静态列表List总结前言
在WPF项目中如何去选择使用ObservableCollection 与 List集合 一、核心概念简介
ObservableCollection
ObservableCollection 是 .NET 提供的可观察集合类继承自 Collection并实现了 INotifyCollectionChanged 和 INotifyPropertyChanged 接口。其核心特性是当集合内容如元素添加、删除、替换或重置发生变更时会主动触发事件通知订阅者
List
List 是最常用的泛型列表类继承自 IList、ICollection 等接口。它基于动态数组实现提供高效的随机访问和增删操作但默认不支持集合变更通知
二、关键差异对比
特性ObservableCollectionList变更通知支持通过 CollectionChanged 事件不支持适用场景需要数据绑定或监听集合变更的场景如 UI 控件后台数据处理、无需通知的高频操作场景内存占用略高需维护事件订阅机制更低
三、典型使用场景
ObservableCollection 的适用场景
UI 数据绑定在 WPF、UWP 或 WinUI 中绑定到 ListBox、DataGrid 等控件时集合内容变更需自动同步到界面状态监控需要监听集合变更并触发其他逻辑如日志记录、统计更新
List 的适用场景
后台数据处理如算法计算、批量数据导入导出无需外部感知集合变更高频增删操作频繁添加/删除元素时如临时缓存避免事件通知带来的性能开销
四、在Community Toolkit MVVM中使用ObservableCollection和List
场景1动态列表ObservableCollection
// ViewModel
[ObservableProperty]
private ObservableCollectionData _apiData1;public void AddData(Data item)
{_apiData1.Add(item); // UI自动刷新
}// XAML绑定
ListView ItemsSource{Binding ApiData1}/效果向_apiData1添加/删除元素时绑定控件自动更新
场景1静态列表List
[ObservableProperty]
private ListData _apiData2;public void ReplaceData(ListData newData)
{ApiData2 newData; // 需整个集合替换才能触发UI更新
}局限若通过_apiData2.Add()修改集合UI不会刷新需手动调用OnPropertyChanged(nameof(ApiData2))
总结
ObservableCollection 与 List 的核心差异在于是否支持集合变更通知。前者适用于需要数据绑定或监听变更的场景如 UI 开发后者更适合后台数据处理或高频操作场景