在wpf中的datagrid中的DataGridComboBoxColumn中进行排序

sam*_*mar 3 wpf wpf-controls wpfdatagrid datagridcomboboxcolumn

我有datagrid,其中有一列作为DataGridComboBoxColumn.显示现有数据,绑定itemsource,在选择更改时更新源工作正常.

问题是,当我点击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" />
Run Code Online (Sandbox Code Playgroud)

上面使用的一些术语的类型

数据库 - ObservableCollection

ManageTablesVMInstance - ViewModel的实例

数据库 - ObservableCollection

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

请帮忙.

提前致谢.

问候,

萨马

sam*_*mar 6

我自己找到了解决方案.在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" />
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是没人回答这个问题 我想知道为什么.

问候,

萨马