簡體   English   中英

如何使用CollectionViewSource按日期對xml記錄進行排序?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM