C# 如何使用CollectionViewSource按日期对xml记录进行排序?
我有以下XML:C# 如何使用CollectionViewSource按日期对xml记录进行排序?,c#,wpf,xml,C#,Wpf,Xml,我有以下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=
<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>
Data/Images/01.jpg
我们说了些废话
06/11/2009
Data/Images/02.jpg
我们毕业了!
29/11/2007
Data/Images/03.jpg
滑雪
19/12/2008
//…等等
以及以下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年11月6日被归类为2008年12月19日之前,正如人们所期待的那样。将我的日期格式更改为yyyy/mm/dd会导致我出现问题,因为XML日期显示为我的表单的一部分,并且需要显示为dd/mm/yyyy。有谁能告诉我如何对日期进行排序以满足显示要求
非常感谢,我将非常感谢您的帮助。我怀疑这可能只是使用纯XML而不是将其转换为业务对象的一个主要缺点。原始字符串值只知道如何按字母数字排序 如果您愿意用一些代码来解决这个问题,您可以使用这个属性和一个自定义的分类器,该分类器将字符串转换成一个合适的DateTime对象进行排序
public class DateStringComparer : IComparer
{
public int Compare(object x, object y)
{
return DateTime.Compare(DateTime.Parse(x.ToString()), DateTime.Parse(y.ToString()));
}
}
我怀疑这可能只是使用纯XML而不是将其转换为业务对象的一个主要缺点。原始字符串值只知道如何按字母数字排序 如果您愿意用一些代码来解决这个问题,您可以使用这个属性和一个自定义的分类器,该分类器将字符串转换成一个合适的DateTime对象进行排序
public class DateStringComparer : IComparer
{
public int Compare(object x, object y)
{
return DateTime.Compare(DateTime.Parse(x.ToString()), DateTime.Parse(y.ToString()));
}
}