在C#中,BindingList<T>是一个非常重要的集合类,位于System.ComponentModel命名空间,主要用于实现数据绑定(Data Binding)场景。
1. 核心作用
BindingList<T>是List<T>的增强版,主要提供以下功能:
- 自动通知UI更新:当集合内容变化(增删改)时,自动触发事件通知绑定控件(如DataGridView、ListBox等)刷新显示。
- 支持双向数据绑定:简化UI控件与数据集合的同步,无需手动编写刷新逻辑。
- 扩展的事件支持:比普通
List<T>提供更多细粒度的事件(如AddingNew、ListChanged)。
2. 关键特性
(1) 自动触发UI更新
1 2 3 4 5 |
|
(2) 丰富的事件
| 事件 | 触发时机 |
|---|---|
| ListChanged | 列表内容或结构变化时(增删改排序等) |
| AddingNew | 添加新项之前 |
| AddingNew | 添加新项之前 |
1 2 3 4 |
|
(3) 支持编辑通知
若T实现INotifyPropertyChanged,项属性修改时也会通知UI:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
3. 典型使用场景
(1) WinForms/WPF数据绑定
1 2 3 4 5 6 |
|
复制讲解
(2) 实时监控集合变化
1 2 3 |
|
4. 注意事项
- 性能:频繁大规模更新时,考虑使用
ResetItems通知而非逐项更新。 - 线程安全:需通过
Invoke在UI线程操作(与所有控件交互一样)。 - WPF优先用
ObservableCollection<T>:BindingList主要面向WinForms设计。