CollectionViewSource 类

定义

提供向集合类添加分组和当前项支持的数据源。

public ref class CollectionViewSource sealed : DependencyObject
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class CollectionViewSource final : DependencyObject
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class CollectionViewSource final : DependencyObject
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class CollectionViewSource : DependencyObject
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class CollectionViewSource : DependencyObject
Public NotInheritable Class CollectionViewSource
Inherits DependencyObject
<CollectionViewSource .../>
继承
Object Platform::Object IInspectable DependencyObject CollectionViewSource
属性

Windows 要求

设备系列
Windows 10 (在 10.0.10240.0 中引入)
API contract
Windows.Foundation.UniversalApiContract (在 v1.0 中引入)

示例

提示

有关详细信息、设计指南和代码示例,请参阅 深入的数据绑定

如果已安装 WinUI 2 库 应用,请单击此处 打开该应用,并查看使用 SemanticZoom 进行分组的示例

下面的代码示例演示如何将 ListBox 控件绑定到分组 LINQ 查询的结果, (团队集合按城市分组,并使用城市名称作为组标头) 显示。 有关完整的代码列表,请参阅 XAML 数据绑定示例

<Grid>

  <Grid.Resources>
    <CollectionViewSource x:Name="groupInfoCVS" IsSourceGrouped="true"/>
  </Grid.Resources>

  <ListBox x:Name="lbGroupInfoCVS" 
    ItemsSource="{Binding Source={StaticResource groupInfoCVS}}">

    <ListBox.GroupStyle>
      <GroupStyle>
        <GroupStyle.HeaderTemplate>
          <DataTemplate>

            <TextBlock Text="{Binding Key}"/>

          </DataTemplate>
        </GroupStyle.HeaderTemplate>
      </GroupStyle>
    </ListBox.GroupStyle>

    <ListBox.ItemTemplate>
      <DataTemplate>

        <Border Background="{Binding Color}" 
          Width="200" CornerRadius="10" HorizontalAlignment="Left">

          <TextBlock Text="{Binding Name}" 
            Style="{StaticResource DescriptionTextStyle}" 
            HorizontalAlignment="Center" FontWeight="Bold"/>

        </Border>
      </DataTemplate>
    </ListBox.ItemTemplate>

  </ListBox>

</Grid>
Teams teams = new Teams();
var result = 
    from t in teams 
    group t by t.City into g 
    orderby g.Key 
    select g;
groupInfoCVS.Source = result;

有关更详细的示例,请参阅 XAML 数据绑定示例

注解

如果要将列表控件绑定到集合,但想要在组中显示这些集合并维护与列表控件无关的当前项,请使用 CollectionViewSource。 如果要将多个控件绑定到同一个集合,并且希望一个控件中的当前项更改其他绑定控件中的当前项,这尤其有用。 通常将 CollectionViewSource 定义为 XAML 资源,并使用 {StaticResource} 标记扩展绑定到它。 然后,可以在代码隐藏中将其 Source 属性设置为受支持的集合类型。

绑定到同一 CollectionViewSource 的任何控件将始终具有相同的当前项。 可以通过 CollectionViewSource.View 属性值的 ICollectionView.CurrentItem 属性以编程方式访问当前项。

如果集合中的项本身是集合,或者是包含集合的对象,则可以在较大的集合中将集合显示为组。 为此,请将 IsSourceGrouped 属性设置为 true。 如果项包含集合,但不是集合本身,则还必须将 ItemsPath 属性设置为集合属性的名称。

注意

不支持将 Source 属性设置为另一个 CollectionViewSource 实例。

构造函数

CollectionViewSource()

初始化 CollectionViewSource 类的新实例。

属性

Dispatcher

获取与此对象关联的 CoreDispatcherCoreDispatcher 表示可以访问 UI 线程上的 DependencyObject 的工具,即使代码是由非 UI 线程启动的。

(继承自 DependencyObject)
IsSourceGrouped

获取或设置一个值,该值指示是否对源数据进行分组。

IsSourceGroupedProperty

标识 IsSourceGrouped 依赖属性。

ItemsPath

获取或设置要从顶级项跟踪的属性路径,以查找 CollectionViewSource 中的组。

ItemsPathProperty

标识 ItemsPath 依赖属性。

Source

获取或设置要从中创建该视图的集合对象。

SourceProperty

标识 Source 依赖属性。

View

获取当前与此 CollectionViewSource 实例关联的视图对象。

ViewProperty

标识 View 依赖属性。

方法

ClearValue(DependencyProperty)

清除依赖属性的本地值。

(继承自 DependencyObject)
GetAnimationBaseValue(DependencyProperty)

返回为依赖属性建立的任何基值,该基值适用于动画未处于活动状态的情况。

(继承自 DependencyObject)
GetValue(DependencyProperty)

DependencyObject 返回依赖属性的当前有效值。

(继承自 DependencyObject)
ReadLocalValue(DependencyProperty)

如果设置了本地值,则返回依赖属性的本地值。

(继承自 DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

注册通知函数,用于侦听此 DependencyObject 实例上对特定 DependencyProperty 的更改。

(继承自 DependencyObject)
SetValue(DependencyProperty, Object)

设置 DependencyObject 上依赖属性的本地值。

(继承自 DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

取消以前通过调用 RegisterPropertyChangedCallback 注册的更改通知。

(继承自 DependencyObject)

适用于

另请参阅