我可能以不太优雅的方式完成我想要的东西,但要避免这种情况,是否有可能:
使用单个CollectionView,根据某些条件在其中创建一个组(例如,其中一个其他属性不为null)?我可以在视图所基于的类中创建一个Property,但这是一个非常具体/次要的用例,所以我不想这样做。如果我在WPF / XAML或代码中执行此操作无关紧要。
然后,我需要按照组关联对视图中的项目进行排序,以及对组内的项目进行排序。但我主要关心的是我的第一点。
答案 0 :(得分:0)
创建自己的类,从PropertyGroupDescription派生并覆盖NamesMatch方法,实现自己关于要分组的项目的逻辑。
在以下示例中,我对MyClass类型的所有项进行分组,其属性OtherProperty为null:
的.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;
}
}