CollectionView - 通过条件而不是属性创建组

时间:2018-01-12 21:07:44

标签: c# wpf sorting collectionview

我可能以不太优雅的方式完成我想要的东西,但要避免这种情况,是否有可能:

使用单个CollectionView,根据某些条件在其中创建一个组(例如,其中一个其他属性不为null)?我可以在视图所基于的类中创建一个Property,但这是一个非常具体/次要的用例,所以我不想这样做。如果我在WPF / XAML或代码中执行此操作无关紧要。

然后,我需要按照组关联对视图中的项目进行排序,以及对组内的项目进行排序。但我主要关心的是我的第一点。

1 个答案:

答案 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;
    }
}