CollectionViewSource 类

定义

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

public ref class CollectionViewSource sealed : DependencyObject
/// [Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 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.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class CollectionViewSource : DependencyObject
Public NotInheritable Class CollectionViewSource
Inherits DependencyObject
<CollectionViewSource .../>
继承
Object Platform::Object IInspectable DependencyObject CollectionViewSource
属性

示例

提示

有关详细信息、设计指南和代码示例,请参阅 语义式缩放

WinUI 3 库应用包括大多数 WinUI 3 控件、特性和功能的交互式示例。 通过 Microsoft Store 获取应用,或在 GitHub 上获取源代码。

下面的代码示例演示如何将 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;

注解

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

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

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

注意

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

构造函数

CollectionViewSource()

初始化 CollectionViewSource 类的新实例。

属性

Dispatcher

始终在Windows 应用 SDK应用中返回 null 。 请改用 DispatcherQueue

(继承自 DependencyObject)
DispatcherQueue

获取 DispatcherQueue 与此 对象关联的 。 DispatcherQueue表示可以访问 DependencyObject UI 线程上的 的功能,即使代码是由非 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)

适用于

另请参阅