问题描述
我有一个wpf数据网格.我为其分配了ObservableCollection.
I have a wpf datagrid. I assign ObservableCollection to it.
DG1.DataContext = a;
其中一列的值如下所示
1_A_B
12_A1_B
3_A2_B
10_A3_B
2_A4_B
15_A5_B
我想使用第一个整数值对数据网格进行排序
i want to sort the datagrid using the first integer value like following
1_A_B
2_A4_B
3_A2_B
10_A3_B
12_A1_B
15_A5_B
如果我使用此列进行排序,它将像以下那样以字符串升序(这不是我想要的)
If i sort using this column, it is taking as string ascending like following(which is not i want)
1_A_B
10_A3_B
12_A1_B
15_A5_B
2_A4_B
3_A2_B
我想使用上面列中的第一个整数值进行排序
I want to sort using the first integer value in above column
推荐答案
值1_A_B
,12_A1_B
等将包含在绑定到该列的属性中.我们称它为PropertyA
.
The values 1_A_B
, 12_A1_B
etc will be contained within the property bound to that column. Let's call this PropertyA
.
可能最简单的方法是在数据对象上拥有另一个属性,我们称之为YourSortOrder
.当使用非null值调用PropertyA
上的setter时,可以将简单的字符串处理与 int.Parse()提取数字值并将其分配给YourSortOrder
.
Possibly the easiest way to achieve this is to have another property on the data object, let's call that YourSortOrder
. When the setter on PropertyA
gets called with a non null value, you can use simple string manipulation together with an int.Parse() to extract the numeric value and assign it to YourSortOrder
.
此代码不是生产质量,但说明了这一点:
This code isn't production quality but illustrates the point:
public string PropertyA
{
get { ... }
set
{
_propertyA = value;
if (value != null)
YourSortOrder = int.Parse(value.Substring(0, value.IndexOf("_", StringComparison.InvariantCultureIgnoreCase)));
}
}
然后将DataGridColumn的SortMemberPath
设置为属性YourSortOrder
:
then set the SortMemberPath
of your DataGridColumn to the property YourSortOrder
:
<DataGridColumn x:Name="xxxxx"
SortMemberPath="YourSortOrder"
...etc...
这篇关于使用附加字符串的整数对WPF数据网格进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!