CollectionViewSource 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供向集合类添加分组和当前项支持的数据源。
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 .../>
- 继承
- 属性
示例
提示
有关详细信息、设计指南和代码示例,请参阅 语义式缩放。
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应用中返回 |
DispatcherQueue |
获取 |
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) |