CollectionView 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示用于对数据收集进行分组、排序、筛选和导航的视图。
public ref class CollectionView : System::Windows::Threading::DispatcherObject, System::Collections::IEnumerable, System::ComponentModel::ICollectionView, System::ComponentModel::INotifyPropertyChanged
public ref class CollectionView : System::Windows::Threading::DispatcherObject, System::Collections::IEnumerable, System::Collections::Specialized::INotifyCollectionChanged, System::ComponentModel::ICollectionView, System::ComponentModel::INotifyPropertyChanged
public class CollectionView : System.Windows.Threading.DispatcherObject, System.Collections.IEnumerable, System.ComponentModel.ICollectionView, System.ComponentModel.INotifyPropertyChanged
public class CollectionView : System.Windows.Threading.DispatcherObject, System.Collections.IEnumerable, System.Collections.Specialized.INotifyCollectionChanged, System.ComponentModel.ICollectionView, System.ComponentModel.INotifyPropertyChanged
type CollectionView = class
inherit DispatcherObject
interface ICollectionView
interface IEnumerable
interface INotifyCollectionChanged
interface INotifyPropertyChanged
type CollectionView = class
inherit DispatcherObject
interface IEnumerable
interface INotifyCollectionChanged
interface ICollectionView
interface INotifyPropertyChanged
Public Class CollectionView
Inherits DispatcherObject
Implements ICollectionView, IEnumerable, INotifyPropertyChanged
Public Class CollectionView
Inherits DispatcherObject
Implements ICollectionView, IEnumerable, INotifyCollectionChanged, INotifyPropertyChanged
- 继承
- 派生
- 实现
注解
不应在代码中创建此类的对象。 若要为仅实现 IEnumerable的集合创建集合视图,请创建一个 CollectionViewSource 对象,将集合添加到 Source 属性,并从该属性获取集合视图 View 。
可以将集合视图视为绑定源集合顶部的层,该层允许基于排序、筛选和分组查询来导航和显示集合,而无需操作基础源集合本身。 如果源集合实现 INotifyCollectionChanged 接口,引发事件的更改 CollectionChanged 将传播到视图。
由于视图不会更改基础源集合,因此源集合可以有多个与之关联的视图。 通过使用视图,可以通过不同的方式显示相同的数据。 例如,可以使用对象集合 Task 上的两个视图来显示按页面一部分的优先级排序的任务,并按页面另一部分的区域进行分组。
在 WPF 应用程序中,所有集合都具有关联的默认集合视图。 绑定引擎始终通过关联的视图访问集合,而不是直接使用集合。 若要获取默认视图,请使用 CollectionViewSource.GetDefaultView 该方法。 基于 CollectionView 内部类是仅 IEnumerable实现的集合的默认视图。 ListCollectionView 是实现 IList的集合的默认视图。 BindingListCollectionView 是实现 IBindingListView 或 IBindingList.
或者,可以使用类在可扩展应用程序标记语言(XAML) CollectionViewSource 中创建集合的视图,然后将控件绑定到该视图。 该 CollectionViewSource 类是类的 CollectionView XAML 表示形式。 有关示例,请参阅 How to: Sort and Group Data Using a View in XAML.
有关详细信息,请参阅数据绑定概述中的“绑定到集合”。
若要在 XAML 中设置视图,请使用类 CollectionViewSource 。 CollectionViewSource 是类的 CollectionView XAML 表示形式,它公开了该类最常用的成员 CollectionView 。
构造函数
| 名称 | 说明 |
|---|---|
| CollectionView(IEnumerable) |
初始化表示指定集合视图的类的新实例 CollectionView 。 |
属性
| 名称 | 说明 |
|---|---|
| AllowsCrossThreadChanges |
获取一个值,该值指示创建 CollectionView 线程以外的线程是否可以更改 SourceCollection。 |
| CanFilter |
获取一个值,该值指示视图是否支持筛选。 |
| CanGroup |
获取一个值,该值指示视图是否支持分组。 |
| CanSort |
获取一个值,该值指示视图是否支持排序。 |
| Comparer |
返回可用于比较视图中的项的对象。 |
| Count |
获取视图中的记录数。 |
| Culture |
获取或设置排序期间要使用的区域性信息。 |
| CurrentItem |
获取视图中的当前项。 |
| CurrentPosition |
获取(可选)排序和筛选)视图中的 CurrentItem 序号位置。 |
| Dispatcher |
获取与此DispatcherDispatcherObject关联的值。 (继承自 DispatcherObject) |
| Filter |
获取或设置用于确定项是否适合包含在视图中的方法。 |
| GroupDescriptions |
获取一个对象集合,该集合 GroupDescription 描述集合中的项在视图中的分组方式。 |
| Groups |
获取基于 GroupDescriptions 属性构造的顶级组的集合。 |
| IsCurrentAfterLast |
获取一个值,该值指示视图是否 CurrentItem 超出集合末尾。 |
| IsCurrentBeforeFirst |
获取一个值,该值指示视图是否 CurrentItem 在集合的开头之前。 |
| IsCurrentInSync |
获取一个值,该值指示 CurrentItem 是否位于 CurrentPosition. |
| IsDynamic |
获取一个值,该值指示基础集合是否提供更改通知。 |
| IsEmpty |
获取一个值,该值指示生成的(筛选)视图是否为空。 |
| IsInUse |
获取一个值,该值指示任何对象是否订阅此 CollectionView事件。 |
| IsRefreshDeferred |
获取一个值,该值指示是否存在未使用的未完成 DeferRefresh() 项。 |
| NeedsRefresh |
获取一个值,该值指示是否需要刷新视图。 |
| NewItemPlaceholder |
获取集合中要表示新项的对象。 |
| SortDescriptions |
获取一个结构集合,该集合 SortDescription 描述集合中的项在视图中的排序方式。 |
| SourceCollection |
返回基础未筛选的集合。 |
| UpdatedOutsideDispatcher |
获取一个值,该值指示是否需要更新更改日志,因为 CollectionChanged 未首先输入用户界面(UI)线程调度程序即可在不同的线程上收到通知。 |
方法
活动
| 名称 | 说明 |
|---|---|
| CollectionChanged |
在视图已更改时发生。 |
| CurrentChanged |
在 CurrentItem 更改后发生。 |
| CurrentChanging |
在 CurrentItem 更改时发生。 |
| PropertyChanged |
当属性值发生更改时发生。 |
显式接口实现
| 名称 | 说明 |
|---|---|
| IEnumerable.GetEnumerator() |
返回可用于 IEnumerator 枚举视图中项的对象。 |
| INotifyCollectionChanged.CollectionChanged |
在视图已更改时发生。 |
| INotifyPropertyChanged.PropertyChanged |
在属性值更改时发生。 |
扩展方法
| 名称 | 说明 |
|---|---|
| AsParallel(IEnumerable) |
启用查询的并行化。 |
| AsQueryable(IEnumerable) |
将 IEnumerable 转换为 IQueryable。 |
| Cast<TResult>(IEnumerable) |
将 IEnumerable 的元素强制转换为指定类型。 |
| OfType<TResult>(IEnumerable) |
根据指定类型筛选 IEnumerable 的元素。 |