是否有更简单的方法可以正确排序数据网格中的数字数据?
说明 - 当您单击带有数据1,5,10,2的列标题时,它会将其排序为文本(1,10,2,5)。
我已经读过你可以实现ICollectionView,来创建自己的自定义排序。在我走这条路之前,我想确保没有更简单的方法。
答案 0 :(得分:3)
一位同事解决了我的问题。通过将源对象包装在包装器中,您可以定义SortBLANK,它只返回数据而不是字符串。然后我使用SortMemberPath设置该调用的排序。请注意,这仅适用于仅数字排序的问题。
XAML(部分):
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn Header="MAC" FontSize="12" Binding="{Binding macaddr}" Width="100"/>
<sdk:DataGridTextColumn Header="Upload Rate" SortMemberPath="SortUpload" FontSize="12" Binding="{Binding uploadRate}" Width="3*"/>
<sdk:DataGridTextColumn Header="Download Rate" SortMemberPath="SortDownload" FontSize="12" Binding="{Binding downloadRate}" Width="3*"/>
</sdk:DataGrid.Columns>
代码隐藏(部分):
public class OnlineDevicesWrapper
{
public string macaddr{get;set;}
public string uploadRate { get; set; }
public string downloadRate { get; set; }
public int SortUpload
{
get
{
return int.Parse(uploadRate);
}
}
public int SortDownload
{
get
{
return int.Parse(downloadRate);
}
}
}
答案 1 :(得分:2)
您想要的是使用IComparer接口的自然字符串排序比较器。有几个C#解决方案,我列出了几个。请注意,我不认为它们中的任何一个都是专门针对Silverlight的,尽管在Silverlight中使用它们不会有太多麻烦。
How to achieve Natural(human alpha-numeric ) Sorting, for silverlight datagrids using ViewModel?
http://www.codeproject.com/KB/string/NaturalSortComparer.aspx