在WPF中的DataGridComboBoxColumn中进行排序

3
我有一个datagrid,其中一列是DataGridComboBoxColumn。现有数据的显示、项源绑定以及在选择更改时更新源都正常工作。
问题是,当我点击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" />

上面提到的一些词汇类型

数据库 - ObservableCollection

ManageTablesVMInstance - ViewModel的实例

数据库 - ObservableCollection

如果需要其他任何信息,请告诉我。我正在使用 .net 4.0。

请帮忙。

提前致谢。

敬礼,

Samar

1个回答

7

我自己找到了解决方案。在SortMemberPath中,我应该输入"Databases.DatabaseName"而不是只输入"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" />

令人惊讶的是,没有人回答这个问题。我不知道为什么。

祝好,

Samar


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接