2012-10-10 109 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" /> 

令人驚訝的是沒有人回答這個問題。我想知道爲什麼。

問候,

薩馬