[英]How do you sort a CollectionViewSource by one property, then by another as a tiebreak?
[英]How do I use CollectionViewSource to sort xml records by date?
我有以下XML:
<Memories>
<Memory Title="blah blah" ID="1">
<ImageFile>Data/Images/01.jpg</ImageFile>
<Blurb>We did blah</Blurb>
<Date>06/11/2009</Date>
</Memory>
<Memory Title="Graduation" ID="2">
<ImageFile>Data/Images/02.jpg</ImageFile>
<Blurb>We graduated!</Blurb>
<Date>29/11/2007</Date>
</Memory>
<Memory Title="Ski time!" ID="3">
<ImageFile>Data/Images/03.jpg</ImageFile>
<Blurb>Ski!!!!!</Blurb>
<Date>19/12/2008</Date>
</Memory>
//...etc
</Memories>
以及以下XAML:
<CollectionViewSource x:Key="dataCvs" Source="{StaticResource data}" >
<CollectionViewSource.SortDescriptions >
<scm:SortDescription PropertyName="Date" />
</CollectionViewSource.SortDescriptions>
<CollectionViewSource.GroupDescriptions >
<dat:PropertyGroupDescription PropertyName="@Name" />
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
我希望能夠按日期排序,但以目前的格式,日期不會按自然日期順序排序; 正如人們期望的那樣,將06/11/2009排序為2008年12月19日之前。 將我的日期格式更改為yyyy / mm / dd會引起我一個問題,因為XML日期正在作為表單的一部分顯示,並且它需要顯示為dd / mm / yyyy。 任何人都可以啟發我如何對日期進行排序以適合顯示要求嗎?
非常感謝,我將不勝感激。
我懷疑這可能只是使用純XML的主要缺點,而不是將其轉換為業務對象。 原始字符串值僅知道如何按字母數字排序。
如果您願意通過一些隱藏的代碼來解決問題,則可以將ListCollectionView.CustomSort屬性與自定義排序程序一起使用,該自定義排序程序會將字符串轉換為正確的DateTime對象以進行排序。
public class DateStringComparer : IComparer
{
public int Compare(object x, object y)
{
return DateTime.Compare(DateTime.Parse(x.ToString()), DateTime.Parse(y.ToString()));
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.