我正在开发一个计划程序,其中项目具有预定日期,但用户可以选择在他们选择的日期覆盖它。为了实现这一点,我的 Item 对象使用了两个属性:ScheduledDate (DateTime) 和 ActualDate (DateTime?)。因此,如果 ActualDate 属性为空,则用户尚未覆盖此项的计划。
在我的一种观点中,我需要在 a 中显示这些项目ListBox
,并按实际日期排序。我遇到的麻烦是如何CollectionViewSource
用这两个属性实现 a 。
我知道这是不正确的,但我需要这样的东西:
<CollectionViewSource x:Key="TransactionsViewSource"
Source="{Binding ElementName=ThisControl,
Path=Items}">
<CollectionViewSource.SortDescriptions>
<cm:SortDescription PropertyName="ActualDate ?? ScheduledDate"/>
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
(ThisControl 是UserControl
承载. 的名称ListBox
。)
如果我添加第二个 SortDescriptor(如下所示),我会得到一个按 ActualDate 排序的列表,然后按 Scheduled Date 排序,它将所有被覆盖的项目组合在一起。这不是期望的行为。
<CollectionViewSource x:Key="TransactionsViewSource"
Source="{Binding ElementName=ThisControl,
Path=Items}">
<CollectionViewSource.SortDescriptions>
<cm:SortDescription PropertyName="ActualDate"/>
<cm:SortDescription PropertyName="ScheduledDate"/>
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
谢谢。