Wpf 排序CollectionViewSource时,如何在SortDescription中设置条件而不是PropertyName?

Wpf 排序CollectionViewSource时,如何在SortDescription中设置条件而不是PropertyName?,wpf,xaml,observablecollection,collectionviewsource,Wpf,Xaml,Observablecollection,Collectionviewsource,我想对CollectionViewSource进行排序,但我需要设置一个条件,而不是PropertyName。事实上,我想使用Xaml中的CollectionViewSource进行以下排序 Class2Colection.OrderBy(s => s.Id).OrderBy(s =>!s.Id.HasValue)); <CollectionViewSource Source="{Binding Class2Colection}"> <Col

我想对
CollectionViewSource
进行排序,但我需要设置一个条件,而不是
PropertyName
。事实上,我想使用
Xaml
中的
CollectionViewSource
进行以下排序

  Class2Colection.OrderBy(s => s.Id).OrderBy(s =>!s.Id.HasValue));

  <CollectionViewSource Source="{Binding Class2Colection}">
       <CollectionViewSource.SortDescriptions>
            <scm:SortDescription PropertyName="Id" Direction="Ascending"/>
            <scm:SortDescription PropertyName="??" Direction="Ascending"/>
       </CollectionViewSource.SortDescriptions>
  </CollectionViewSource>
class2collection.OrderBy(s=>s.Id).OrderBy(s=>!s.Id.HasValue));

您可以通过实现自己的
IComparer
并将其设置为
ListCollectionView
类的public
CustomSort
属性来应用自定义排序逻辑。但这并不是你问题的完整答案,而是你可以前进的方向

最简单的方法就是这样


xaml
中,要公开数据类中的另一个属性,该属性将返回
!Id.HasValue
并按它排序。

你能举例说明你想在什么条件下排序吗?@Florian Gl:我已经给出了上面的例子:
class2collection.OrderBy(s=>s.Id.OrderBy(s=>!s.Id.HasValue))@AWoodman:非常感谢。这不是我要找的,但对这个案子有效。@AWoodman:我当然会,但现在我在等待另一个解决方案。
Class2Colection.OrderBy(s => s.Id).OrderBy(s =>!s.Id.HasValue));