0

プロシージャルに (C#、VS 2010) 生成され、バインドされた列を持つ WPF DataGrid を使用していますが、DataGrid はデータを正しく並べ替えません。

CanUserSortColumns が true に設定されています。SortMemberPath は、グリッドに表示されるテキストと同じプロパティに設定されます。

ユーザーがどの列を並べ替えるかに関係なく、適切な列に並べ替えアイコンが表示されているにもかかわらず、DataGrid は最初の列の並べ替え順序を変更するだけです。

column.Header = departmentColumn.ColumnHeader;
column.Width = departmentColumn.ColumnWidth;
column.Binding = new Binding("Cells[" + departmentColumn.Ordinal.ToString() + "]");
column.SortMemberPath = "DisplayString";

他のデータが表示されたり、DataGrid によって誤って使用されたりしても問題はないので、困惑しています。他のすべてが適切な列のデータにバインドされているのに、並べ替えで最初の列のテキストのみが考慮されるのはなぜですか?

4

3 に答える 3

0

今日これに数時間を費やした後、質問を投稿した直後に自分で答えを見つけました.

私は変更しなければなりませんでした:

column.SortMemberPath = "DisplayString";

に:

column.SortMemberPath = "Cells[" + departmentColumn.Ordinal.ToString() + "].DisplayString";

SortMemberPath が常に現在のデータ項目に自動的にバインドされるとは限りません。

すでにこれに取り組み始めた人に感謝します。

于 2013-08-20T15:46:39.950 に答える
0

MSDN の DataGridColumn.SortMemberPath プロパティ ページによると、SortMemberPathプロパティ セット

ソートするデータ項目メンバーのパス

これにより、設定した 1 つの列だけで並べ替えたい場合を除き、このプロパティを設定しないでください。

于 2013-08-20T15:46:47.853 に答える