0

我在应用程序中使用 Xceed WPF Datagrid。我在其中一列上启用了自动筛选,但内容未排序。我不知道是否有一个属性或什么东西,也许是一种风格,来告诉这个东西按字母顺序排序。有没有人有这方面的经验?

不幸的是,当我在谷歌搜索,甚至在 Xceed 的网站上搜索时,与排序相关的所有内容都是通过单击列标题对行进行排序。但是我希望对自动过滤器下拉列表中的选项列表进行排序...

谢谢,纳撒尼尔·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 回答