Числовая сортировка Silverlight Datagrid

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

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

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


person Kyle Jones    schedule 19.01.2011    source источник


Ответы (2)


Сотрудник решил мою проблему. Обернув исходный объект в оболочку, вы можете затем определить 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);
            }
        }
    }
person Kyle Jones    schedule 20.01.2011

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

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

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

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

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

person Joe McBride    schedule 19.01.2011