更新:
2008 年 7 月
命名空间:
System.Windows.Data 程序集:
PresentationFramework(在 PresentationFramework.dll 中)
用于 XAML 的 XMLNS:http://schemas.microsoft.com/winfx/xaml/presentation
Public Class CollectionView _
Inherits DispatcherObject _
Implements ICollectionView, IEnumerable, INotifyCollectionChanged, INotifyPropertyChanged
Dim instance As CollectionView
public class CollectionView : DispatcherObject,
ICollectionView, IEnumerable, INotifyCollectionChanged, INotifyPropertyChanged
public ref class CollectionView : public DispatcherObject,
ICollectionView, IEnumerable, INotifyCollectionChanged, INotifyPropertyChanged
public class CollectionView extends DispatcherObject implements ICollectionView,
IEnumerable, INotifyCollectionChanged, INotifyPropertyChanged
public class CollectionView extends DispatcherObject implements ICollectionView, IEnumerable, INotifyCollectionChanged, INotifyPropertyChanged
<p>
要在 XAML 中设置视图,请使用 <span sdata="cer" target="T:System.Windows.Data.CollectionViewSource"&gCollectionViewSource</span> 类。<span sdata="cer" target="T:System.Windows.Data.CollectionViewSource"&gCollectionViewSource</span> 是 <span sdata="cer" target="T:System.Windows.Data.CollectionView"><span class="selflink">CollectionView</span></span> 类的 XAML 表示形式,而且它公开了最常用的 <span sdata="cer" target="T:System.Windows.Data.CollectionView"><span class="selflink">CollectionView</span></span> 类的成员。
</p>
不应在代码中创建此类的对象。若要为只实现 IEnumerable 的集合创建集合视图,请创建 CollectionViewSource 对象,将集合添加到 Source 属性,然后从 View 属性获取集合视图。
可以将集合视图视为位于绑定源集合之上的一个层,您可以通过它使用排序、筛选和分组查询来导航和显示集合,所有这些操作都无需操作基础源集合本身。如果源集合实现了 INotifyCollectionChanged 接口,则引发 CollectionChanged 事件的更改将传播到视图。
由于视图不会更改基础源集合,因此源集合可以有多个关联的视图。通过使用视图,可以采用多种不同的方式来显示相同的数据。例如,可以对 Task 对象的集合使用两个视图,从而在一部分页面中显示按优先级排序的任务,在另一部分页面中显示按区域分组的任务。
在 WPF 应用程序中,所有集合都有一个关联的默认集合视图。绑定引擎总是通过关联的视图来访问集合,而不是直接使用集合。若要获取默认视图,请使用 CollectionViewSource..::.GetDefaultView 方法。基于 CollectionView 的内部类是仅实现 IEnumerable 的集合的默认视图。ListCollectionView 是实现 IList 的集合的默认视图。BindingListCollectionView 是实现 IBindingListView 或 IBindingList 的集合的默认视图。
或者,可以使用 CollectionViewSource 类在 可扩展应用程序标记语言 (XAML) 中创建集合视图,然后将控件绑定到该视图。CollectionViewSource 类是 CollectionView 类的 XAML 表示形式。有关示例,请参见如何:在 XAML 中使用视图对数据进行排序和分组。
有关更多信息,请参见数据绑定概述中的“绑定到集合”。
使用视图可以用不同的方式查看同一数据集合,具体的方式取决于排序、筛选或分组条件。每个集合都有一个共享的默认视图,此视图在绑定指定集合作为其源时用作实际的绑定源。本示例说明了如何获取集合的默认视图。
若要创建视图,需要对相应集合的对象引用。通过以下方法可以获取此数据对象:引用您自己的代码隐藏对象、获取数据上下文、获取数据源的属性或者获取绑定的属性。本示例说明了如何获取数据对象的 DataContext 并使用它直接获得此集合的默认集合视图。
myCollectionView = (CollectionView)
CollectionViewSource.GetDefaultView(rootElem.DataContext);
在本示例中,根元素是一个 StackPanel。DataContext 设置为引用数据提供程序的 myDataSource,该数据提供程序是 Order 对象的 ObservableCollection<(Of <(T>)>)。
<StackPanel.DataContext>
<Binding Source="{StaticResource myDataSource}"/>
</StackPanel.DataContext>
另外,您也可以使用 CollectionViewSource 类实例化并绑定到您自己的集合视图。此集合视图仅由直接绑定到它的控件共享。有关示例,请参见数据绑定概述中的“如何创建视图”部分。
有关集合视图提供的功能的示例,请参见如何:在视图中对数据进行排序、如何:筛选视图中的数据和如何:在数据集合视图中的对象之间导航。
更多代码
System..::.Object
System.Windows.Threading..::.DispatcherObject
System.Windows.Data..::.CollectionView
System.Windows.Controls..::.ItemCollection
System.Windows.Data..::.BindingListCollectionView
System.Windows.Data..::.ListCollectionView
此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。
Windows Vista
.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。
.NET Framework
受以下版本支持:3.5、3.0
参考
其他资源