2011-11-07 2 views
1

私は、次のXML持っている:私は日付でソートできるようにしたいと思いますが、現在の形では、日付はないでしょうCollectionViewSourceを使用してxmlレコードを日付順に並べ替えるにはどうすればよいですか?

<CollectionViewSource x:Key="dataCvs" Source="{StaticResource data}" > 
     <CollectionViewSource.SortDescriptions > 
      <scm:SortDescription PropertyName="Date" /> 
     </CollectionViewSource.SortDescriptions> 
     <CollectionViewSource.GroupDescriptions > 
      <dat:PropertyGroupDescription PropertyName="@Name" /> 
     </CollectionViewSource.GroupDescriptions> 
    </CollectionViewSource> 

<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を自然な日付順で並べ替えます。 2009年6月11日は、プログラムで期待されるように、19/12/2008以前のものとして分類されています。私の日付形式をyyyy/mm/ddに変更すると、XML日付がフォームの一部として表示され、dd/mm/yyyyとして表示する必要があるため、問題が発生します。誰も私がどのように表示要件に合うように日付を並べ替えることができるかについて私に教えてもらえますか?

多くのおかげで、何か助けていただきありがとうございます。

答えて

1

純粋なXMLをビジネスオブジェクトに変換するのではなく、単にこれを使用することに大きな欠点があると思われます。生の文字列値は、英数字のソート方法のみを認識します。

コードビハインドで問題を解決する場合は、文字列をソート用の適切なDateTimeオブジェクトに変換するカスタムソータを使用してListCollectionView.CustomSortプロパティを使用できます。

public class DateStringComparer : IComparer 
{ 
    public int Compare(object x, object y) 
    { 
     return DateTime.Compare(DateTime.Parse(x.ToString()), DateTime.Parse(y.ToString())); 
    } 
} 
関連する問題