ListView内にDataGridを持つWPFアプリがあります。
private DataTable table_;
大量の列生成または動的な列生成を実行します(表示しているレポートに応じて)
次に、クエリを実行し、DataTableを行ごとに入力します。このクエリにはデータがある場合とない場合があります(問題ありません。空のグリッドが必要です)。ListViewのItemsSourceをDataTableのDefaultViewに設定します。
lv.ItemsSource = table_.DefaultView;
次に(ユーザーのアプリのパス使用状況を確認し、列に並べ替えを設定します)以下の並べ替え方法:
private void Sort(string sortBy, ListSortDirection direction)
{
ICollectionView dataView = CollectionViewSource.GetDefaultView(lv.ItemsSource);
dataView.SortDescriptions.Clear();
var sd = new SortDescription(sortBy, direction);
dataView.SortDescriptions.Add(sd);
dataView.Refresh();
}
ゼロDataTable行のシナリオでは、並べ替えは「保持」されませんか?また、動的に行を追加すると、並べ替えられた順序にはなりません。
並べ替えが適用されたときにDataTableに少なくとも1行があり、DataTableに動的に行を追加すると、行は正しく並べ替えられます。
これを複製するスタンドアロンアプリを作成しました...
これは煩わしいので、DataTableが空かどうかを確認するチェックを追加して、並べ替えを再適用できます...
誰もがここで何が起こっているのか知っています、そして私は何か間違ったことをしていますか?
参考:MSDNからのものである場合、これに基づいたもの: http : //msdn.microsoft.com/en-us/library/ms745786.aspx
アップデート:
「保持」ではない並べ替えは、ICollectionView.SortDescriptionsにSortDescriptionがありますが、追加されたデータを並べ替えていないことを意味します。これも、SortDescriptionが追加されたときに行がある場合、基になるDataTableに行がない場合にのみ発生し、その後、すべてうまくいきます〜