我有带有combox列的WPF datagrid (ID是实值,Desc是显示值),当我单击该列的标题时,会自动按实值(ID)排序。我想按显示值排序。
我的WPF数据网格有4列: IdPerson、DescSchool、IdSchool和学校。列“comboBox”具有以下值:ItemSource= schoolTable.DefaultView,SelectedValueBinding =新绑定(“IDSchool”),SelectedValuePath="IDSchool",DisplayMemberPath = "DescSchool“
schoolTable是一个包含2列的表- IDSchool和DescSchool。该表仅用作combobox的数据源。
当我设置了SortMemberPath = "DescSchool“时,我尝试了这个解决方案,最初,这是有效的-当我单击组合框列的标题时,排序是按显示值(因为它读取另一列的值)而不是按实际值进行的。但是,如果我更改了combobox的值,"DescSchool“列的值仍然是相同的,因此在排序之后不再正常工作。
有什么想法吗?
发布于 2009-06-09 11:22:49
在DataGridComboBoxColumn上设置SortMemberPath="Desc" (或调用您的属性)应该可以做到这一点。
发布于 2014-01-29 19:43:49
最近也遇到了类似的问题。
尝试如下所示:
SortMemberPath="School.DescSchool"希望它能帮助你或其他人!
发布于 2010-06-26 00:42:57
我也遇到过这个问题,不得不在排序的类型上实现IComparable。因此,在你的情况下,我认为它是学校类型的。在IComparable中,返回以下内容:
return this.Desc.CompareTo((obj as School).Desc);这是我能够让它工作的唯一方法,从缺乏回应的情况来看,没有多少人知道更好的way...sorry。
此外,只有在您有权访问类型的情况下,这才会起作用。如果这是一个数据表或类似的东西(例如,与实体框架相反),则此解决方案将不起作用。
https://stackoverflow.com/questions/968937
复制相似问题