【问题标题】:CollectionView - creating groups via conditional not a propertyCollectionView - 通过条件而不是属性创建组
【发布时间】:2018-01-12 21:07:43
【问题描述】:
我可能会以一种不太优雅的方式完成我想要的,但为了避免这种情况,是否有可能:
使用单个 CollectionView,根据某些条件在其中创建一个组(例如,它的其他属性之一不为空)?我可以在视图所基于的类中创建一个属性,但这是一个非常具体/次要的用例,所以我不希望这样做。如果我在 WPF/XAML 或代码中执行此操作并不重要。
然后,我需要按组从属关系对视图中的项目进行排序,并对组内的项目进行排序。但我主要关心我的第一点。
【问题讨论】:
标签:
c#
wpf
sorting
collectionview
【解决方案1】:
创建您自己的从 PropertyGroupDescription 派生的类并覆盖 NamesMatch 方法,实现您自己的关于要分组的项目的逻辑。
在以下示例中,我将 MyClass 类型的所有项目分组,其属性 OtherProperty 为空:
.xaml
<CollectionViewSource Source="{Binding MyItems}" x:Key="myKey">
<CollectionViewSource.GroupDescriptions>
<local:MyGroupingDescription PropertyName="." />
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
.cs
public class MyGroupingDescription : PropertyGroupDescription
{
public override bool NamesMatch(object groupName, object itemName)
{
if((groupName as MyClass).OtherProperty == null && (itemName as MyClass).OtherProperty==null)
{
return true;
}
return false;
}
}