我在应用程序中使用 Xceed WPF Datagrid。我在其中一列上启用了自动筛选,但内容未排序。我不知道是否有一个属性或什么东西,也许是一种风格,来告诉这个东西按字母顺序排序。有没有人有这方面的经验?
不幸的是,当我在谷歌搜索,甚至在 Xceed 的网站上搜索时,与排序相关的所有内容都是通过单击列标题对行进行排序。但是我希望对自动过滤器下拉列表中的选项列表进行排序...
谢谢,纳撒尼尔·D·霍尔科姆
我在应用程序中使用 Xceed WPF Datagrid。我在其中一列上启用了自动筛选,但内容未排序。我不知道是否有一个属性或什么东西,也许是一种风格,来告诉这个东西按字母顺序排序。有没有人有这方面的经验?
不幸的是,当我在谷歌搜索,甚至在 Xceed 的网站上搜索时,与排序相关的所有内容都是通过单击列标题对行进行排序。但是我希望对自动过滤器下拉列表中的选项列表进行排序...
谢谢,纳撒尼尔·D·霍尔科姆
您可以在表示您的列的 ItemProperty 上设置 DistinctValuesSortComparer 属性,并在比较器中进行自定义排序。
我相信他们在他们的示例应用程序中有这个设置。
例如:
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>();
}
<local:MonthNamesDistinctValuesSortComparer x:Key="monthNamesDistinctValuesSortComparer" />
<xcdg:DataGridItemProperty Name="ShippedDate"
Title="Shipped Date"
DistinctValuesSortComparer="{StaticResource monthNamesDistinctValuesSortComparer}"
QueryDistinctValue="OnShippedDateQueryDistinctValue" />