【问题标题】: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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-18
      • 1970-01-01
      • 2016-07-25
      • 2011-01-23
      • 1970-01-01
      • 2019-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多