3

我有datagrid,其中1 列作为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" />

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

数据库 - ObservableCollection

ManageTablesVMInstance - ViewModel 的实例

数据库 - ObservableCollection

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

请帮忙。

提前致谢。

问候,

萨马尔

4

1 回答 1

7

我自己找到了解决方案。在 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" />

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

问候,

萨马尔

于 2012-10-12T14:13:16.823 回答