2011-11-07 2 views
1

나는 다음과 같은 XML이 :CollectionViewSource를 사용하여 날짜별로 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> 

날짜별로 정렬 할 수 있지만, 현재의 형태로하기를, 날짜는하지 않습니다 자연적인 날짜 순서로 정렬; 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())); 
    } 
} 
관련 문제