我有一个数据网格,它有一个列作为 DataGridComboBoxColumn。现有数据的显示、项目源的绑定(bind)、选择更改时更新源工作正常。
问题是当我单击 DataGridComboBoxColumn 的标题时,它没有按字母顺序排序。当我检查时,它实际上是按值排序,而我希望它按显示排序。当我在网上搜索时,它说我应该使用“SortMemberPath”属性并将该属性分配给应该进行排序的属性。
在执行此操作时,排序仅在第一次单击标题时起作用,但在随后的单击中,不会发生排序。我在网上搜索但找不到解决方案。
下面是我的DataGridComboBoxColumn的xaml
<DataGridComboBoxColumn Header="Database Name"
SelectedValueBinding="{Binding Path=Databases.DatabaseID, Mode=TwoWay, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}"
ItemsSource="{Binding Source={StaticResource ManageTablesVMInstance}, Path=Database}"
SelectedValuePath="DatabaseID" DisplayMemberPath="DatabaseName" SortMemberPath="DatabaseName" />
上面使用的一些术语的类型
Databases - ObservableCollection
ManageTablesVMInstance - instance of ViewModel
Database - ObservableCollection
如果我需要任何其他信息,请告诉我。我正在使用 .net 4.0。
请帮忙。
提前致谢。
问候,
萨马尔
最佳答案
我自己找到了解决方案。在 SortMemberPath 而不仅仅是“DatabaseName”中,我应该放置“Databases.DatabaseName”。执行此操作后,排序按预期工作。所以 xaml 看起来像这样。
<DataGridComboBoxColumn Header="Database Name"
SelectedValueBinding="{Binding Path=Databases.DatabaseID, Mode=TwoWay, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}"
ItemsSource="{Binding Source={StaticResource ManageTablesVMInstance}, Path=Database}"
SelectedValuePath="DatabaseID" DisplayMemberPath="DatabaseName" SortMemberPath="Databases.DatabaseName" />
令人惊讶的是没有人回答这个问题。我想知道为什么。
问候,
萨马尔
关于wpf - 在wpf中的datagrid中的DataGridComboBoxColumn中排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12814970/