WPF ListView.Items.SortDescription Ошибка - PullRequest
       17

WPF ListView.Items.SortDescription Ошибка

0 голосов
/ 08 февраля 2010

Я использую метод сортировки WPF SortDescriptions и обнаружил, что он не будет сортировать числа. Когда дан столбец чисел для сортировки, он говорит мне, что «Не удалось сравнить два элемента в массиве»

Кто-нибудь знает, как это обойти? Или, может быть, дать мне несколько советов? Я заметил, что он будет сортировать только правильные строки, но не числа. Выдает исключение, когда ему присваивается число.

Вот мой код спасибо:

     private void SortClick(object sender, RoutedEventArgs e)
     {
          GridViewColumnHeader column = sender as GridViewColumnHeader;
          String field = column.Tag as String;

          if (_curSortCol != null)
          {
            AdornerLayer.GetAdornerLayer(_curSortCol).Remove(_curAdorner);
           ListView.Items.SortDescriptions.Clear();          
          }

          ListSortDirection newDir = ListSortDirection.Ascending;
          if (_curSortCol == column &&
                _curAdorner.Direction == newDir)
            newDir = ListSortDirection.Descending;

          _curSortCol = column;
          _curAdorner = new SortAdorner(_curSortCol, newDir);
          AdornerLayer.GetAdornerLayer(
              _curSortCol).Add(_curAdorner);

          //THIS IS WHERE IT CRASHES!!

          ListView.Items.SortDescriptions.Add(
              new SortDescription(field, newDir));
    }

1 Ответ

0 голосов
/ 03 августа 2015

Вы должны реализовать интерфейс IComparable для своего пользовательского объекта. (! Not IComparable ).

например:

public class MyObject : IComparable
{
    public int Value { get; set; }

    public int CompareTo(object other)
    {
        MyObject rhs = object as MyObject;
        if (rhs == null) return -1;
        return (Value - rhs.Value);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...