Числовая сортировка данных Silverlight - PullRequest
2 голосов
/ 20 января 2011

Есть ли более простой способ правильно отсортировать числовые данные в сетке данных?

Объяснение - Когда вы щелкаете заголовок столбца с данными 1,5,10,2, он сортируется как текст (1,10,2,5).

Я прочитал, что вы можете реализовать ICollectionView, чтобы создать собственную сортировку. Прежде чем идти по этому пути, я хочу убедиться, что нет более легкого пути.

Ответы [ 2 ]

3 голосов
/ 20 января 2011

Сотрудник решил мою проблему.Оборачивая исходный объект в оболочку, вы можете определить SortBLANK, который просто возвращает данные как int вместо строки.Затем я использую 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);
            }
        }
    }
2 голосов
/ 20 января 2011

То, что вы хотите - это естественный компаратор сортировки строк, использующий интерфейс IComparer. Есть несколько решений на C #, я перечислил несколько. Обратите внимание, что я не думаю, что какие-то из них специально предназначены для Silverlight, хотя у вас не должно быть особых проблем с их использованием в Silverlight.

Как добиться естественной (человеческой буквенно-цифровой) сортировки для серебряных данных с использованием ViewModel?

http://www.codeproject.com/KB/string/NaturalSortComparer.aspx

Естественный порядок сортировки в C #

http://www.codeproject.com/KB/recipes/csnsort.aspx

...