アイテムにスケジュールされた日付があるスケジューリング プログラムに取り組んでいますが、ユーザーは選択した日付に対してこれを上書きすることを選択できます。これを実装するために、Item オブジェクトは ScheduledDate (DateTime) と ActualDate (DateTime?) の 2 つのプロパティを使用します。したがって、ActualDate プロパティが null の場合、ユーザーはこのアイテムのスケジュールをオーバーライドしていません。
私のビューの 1 つで、これらの項目をListBox
実際の日付で並べ替えて表示する必要があります。私が抱えている問題はCollectionViewSource
、これら 2 つのプロパティを使用して a を実装する方法です。
正しくないことはわかっていますが、次のようなものが必要です。
<CollectionViewSource x:Key="TransactionsViewSource"
Source="{Binding ElementName=ThisControl,
Path=Items}">
<CollectionViewSource.SortDescriptions>
<cm:SortDescription PropertyName="ActualDate ?? ScheduledDate"/>
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
(ThisControl は、UserControl
をホストするの名前ListBox
です)。
2 番目の 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>
ありがとう。