3

DataGridComboBoxColumn として列の 1 つを持つデータグリッドがあります。既存のデータの表示、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

私は自分で解決策を見つけました。「DatabaseName」だけでなく、SortMemberPath に「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 に答える