WPF的数据绑定(四)绑定到集合
ItemsControl对象(如 ListBox、ListView 或 TreeView)来显示数据集合,数据源使用 ObservableCollection<T> 或一个现有的集合类,如 List<T>、Collection<T> 和 BindingList<T> 等。
通过设置ItemsControl对象的ItemsSource 属性来实现。
ObservableCollection<T> 类,它是公开 INotifyCollectionChanged 接口的数据集合的内置实现。为了完全支持将数据值从源对象传送到目标,支持可绑定属性的集合中的每个对象还必须实现 INotifyPropertyChanged 接口。
在实现自己的集合之前,请先考虑使用 ObservableCollection<T> 或一个现有的集合类,如 List<T>、Collection<T> 和 BindingList<T> 等。如果您有高级方案并且希望实现自己的集合,请考虑使用 IList,它提供可以按索引逐个访问的对象的非泛型集合,因而可提供最佳性能。
一旦 ItemsControl 绑定到数据集合,如希望对数据进行排序、筛选或分组等操作,可以使用集合视图CollectionViewSource 类,这是实现 ICollectionView 接口的类。
集合视图CollectionViewSource 类的Source属性绑定到数据集合类,ItemsControl对象的ItemsSource 属性绑定到集合视图CollectionViewSource 类,视图的操作可通过CollectionViewSource 类的View属性实现。
如将ItemsSource直接绑定到数据集合,WPF会根据数据集合的数据类型绑定到其默认视图。
IEnumerable:基于 CollectionView 的内部类型
IList:ListCollectionView
IBindingList:BindingListCollectionView
若要获取默认视图,请使用 GetDefaultView 方法.
ADO.NET DataTable 或 DataView 对象的集合视图会将排序和筛选工作委托给 DataView。这会导致排序和筛选工作由数据源的所有集合视图分担。若要使每个集合视图都能独立进行排序和筛选,请用每个集合视图自己的 DataView 对象来初始化它。
浙公网安备 33010602011771号