2012-10-10 63 views
3

我有datagrid,它有1列作为DataGridComboBoxColumn。显示现有数据,项目源的绑定,选择更改时更新源工作正常。在wpf中datagrid的DataGridComboBoxColumn中排序

问题是,当我点击DataGridComboBoxColumn它不按字母顺序排列的标题。当我检查它实际上按价值排序,而我希望它根据显示进行排序。当我在网上搜索时,它说我应该使用“SortMemberPath”属性并将该属性分配给应该发生排序的属性。

在此过程中,排序仅在首次单击标题时起作用,但在随后的单击中,不会进行排序。我在网上搜索,但无法找到解决方案。

以下是我的XAML DataGridComboBoxColumn

<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 - 视图模型

实例

数据库 - ObservableCollection

请让我知道,如果有任何其他信息是我需要的。我正在使用.net 4.0。

请帮忙。

在此先感谢。

问候,

萨马

回答

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" /> 

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

问候,

萨马