Сортировать содержимое автофильтра - XCeed WPF Datagrid - PullRequest
0 голосов
/ 18 ноября 2011

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

К сожалению, когда я выполняю поиск в Google или даже выполняю поиск на веб-сайте Xceed, все, что связано с сортировкой, заключается в сортировке строк путем нажатия на заголовок столбца.Но я хочу, чтобы список параметров в раскрывающемся списке автофильтров был отсортирован ...

Спасибо, Натаниэль Д. Холкомб

1 Ответ

1 голос
/ 22 ноября 2011

Вы можете установить свойство DistinctValuesSortComparer для ItemProperty, представляющего ваш столбец, и выполнить собственную сортировку в компараторе.

Я полагаю, что они имеют этот набор в своем примере приложения.

Например:

C #

public class MonthNamesDistinctValuesSortComparer : IComparer
  {
    public MonthNamesDistinctValuesSortComparer()
    {
      for( int i = 0; i < DateTimeFormatInfo.CurrentInfo.MonthNames.Length; i++ )
      {
        string monthName = DateTimeFormatInfo.CurrentInfo.MonthNames[ i ];
        m_monthNameToIndex.Add( monthName, i );
      }
    }

    #region IComparer Members

    public int Compare( object x, object y )
    {
      string xMonth = x as string;
      string yMonth = y as string;

      if( ( xMonth != null ) && ( yMonth != null ) )
      {
        int xIndex = m_monthNameToIndex[ xMonth ];
        int yIndex = m_monthNameToIndex[ yMonth ];

        if( xIndex < yIndex )
        {
          return -1;
        }
        else if( xIndex == yIndex )
        {
          return 0;
        }
        else
        {
          return 1;
        }
      }

      // Unable to compare, return 0 (equals)
      return 0;
    }

    #endregion

    private Dictionary<string, int> m_monthNameToIndex = new Dictionary<string, int>();
  }

XAML

<local:MonthNamesDistinctValuesSortComparer x:Key="monthNamesDistinctValuesSortComparer" />
<xcdg:DataGridItemProperty Name="ShippedDate"
                                          Title="Shipped Date"
                                          DistinctValuesSortComparer="{StaticResource monthNamesDistinctValuesSortComparer}"
                                          QueryDistinctValue="OnShippedDateQueryDistinctValue" />

...