私はコンボボックスでフィルタリングされたDatagridを持っていて、とのボタンを使用してこのデータグリッドの行を交換したいと思います。データソースに影響を与えずに、WPFでフィルタリングされたDataGridの行を入れ替えるにはどうすればよいですか?
upボタンを使用していますが、行を交換した後、データグリッドのデータソース内の項目は、フィルタされた項目と一致するように変更され、他の行も削除されます。
これは私のコードです:
if (Datagrid1.SelectedIndex != -1 && Datagrid1.SelectedIndex != 0)
{
DataTable dt = ((DataView)Datagrid1.ItemsSource).ToTable();
int index = Datagrid1.SelectedIndex;
DataRow selectedRow = dt.Rows[index];
DataRow newRow = dt.NewRow();
newRow.ItemArray = selectedRow.ItemArray;
dt.Rows.Remove(selectedRow);
dt.Rows.InsertAt(newRow, index - 1);
Datagrid1.ItemsSource = dt.DefaultView;
Datagrid1.SelectedIndex = index - 1;
}
どのように私は、データ・ソースに影響を与えることなく、自分の順番を変更できますか?この後
Datagrid1.ItemsSource = dt.DefaultView;
、グリッドに移入されますあなたのフィルタに一致する項目のみ:
私は強く、あなたのプロジェクトのためのMVVM溶液に見て、あなたをお勧めします。 MVVMを使用すると、そのような作業はずっと簡単になります。 – Chrille
@Chrille私はMVVMに精通していません。 – JDM
時間と意欲があれば、このトピックのチュートリアルを検索してみてください。 "MVVM WPF" – Chrille