0

アプリで Xceed WPF Datagrid を使用しています。列の 1 つでオートフィルターを有効にしましたが、内容が並べ替えられません。アルファベット順にソートするように伝えるためのプロパティや何か、おそらくスタイルがあるかどうかはわかりません。誰もこれを経験したことがありますか?

残念ながら、Google 検索を行ったり、Xceed の Web サイトで検索したりすると、並べ替えに関連するすべてのことは、列ヘッダーをクリックして行を並べ替えることです。しかし、オートフィルタードロップダウンのオプションのリストを並べ替えたい...

ありがとう、ナサニエル・D・ホルコム

4

1 に答える 1

1

列を表す ItemProperty に DistinctValuesSortComparer プロパティを設定し、比較子内でカスタムの並べ替えを行うことができます。

サンプルアプリケーションにこのセットがあると思います。

例えば:

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" />

于 2011-11-22T16:56:41.870 に答える