私はアイテムを削除できるデータグリッドを持っています。アイテムを削除するということは、それがもうDataGridには表示されないことを意味しますが、それはまだDataSourceにあります。条件に基づいてWpf DataGridで選択したアイテムの後にアイテムを取得するには?
選択したアイテム(現在選択されているアイテムを削除した後にリストに表示されます)を設定するにはどうすればよいですか?
私はいくつかの余分な基準をチェックする必要があるので、オブジェクト自体を取得する必要がありますが、私が考えることができる唯一の方法はいくつかの厄介なループです。
private void OnTakeOneClick(object sender, RoutedEventArgs e)
{
var tableSelectedItem = (PartialPaymentDTO)this.TableDataGrid.SelectedItem;
// var nextItemInGrid = ???
Model.TakeOrderItemsFromTable(tableSelectedItem);
if(tableSelectedItem.QuantityOnTable != 0)
{
this.TableDataGrid.SelectedItem = tableSelectedItem;
}
else
{
// select next item in data grid that based on some extra criteria
}
}
編集:選択したアイテムの後にアイテムのリスト全体を取得すると、本当に役立ちます。
私のデータソースからアイテムを削除しないように注意してください。代わりに、基準に基づいてグリッドで非表示にします。
var tableSelectedItem = (PartialPaymentDTO)this.TableDataGrid.SelectedItem;
int indexOfSelectedItem = this.TableDataGrid.Items.IndexOf(tableSelectedItem);
int indexOfNextItem = indexOfSelectedItem + 1;
if (this.TableDataGrid.Items.Count > indexOfNextItem)
this.TableDataGrid.SelectedItem = this.TableDataGrid.Items[indexOfNextItem];
を選択する必要が次の項目を決定する方法であるあなたがデータグリッドを投入し、現在選択されている項目を設定するためにデータバインディングを使用していますか?もしそうなら、xamlを使うことができます。それ以外の場合は、削除前に現在のアイテムで.IndexOf()を使用しないでください。 –
はい私はデータバインディングを使用していますが、 'AutoGenerateColumns =" False "' –