我通过折叠一个 DataGrid 中的一些行并使它们在另一个 DataGrid 中可见,在 2 个 DataGrids 之间共享一个项目集合。
这工作正常,除了错误,如果用户在 DataGrid 之一中按 Ctrl+a 然后按 Del,另一个的内容也会被删除。
我想更改此行为,以便实际删除发生删除的 DataGrid 中可见的项目。
我怎么做?
可以抑制一个解决方案Ctrl+A:
void DataGridView_KeyDown( object sender, KeyEventArgs e ) {
if ( e.Modifiers == Keys.Control && e.KeyCode == Keys.A )
e.SuppressKeyPress = true;
}
您可能需要挂钩CollectionChanged事件并检查以确保正在删除的 OldItems 可见。如果没有,请将它们重新添加。
这感觉不是一种很好的做事方式。你能不能以某种方式用两个“视图”来包装你的原始集合(我不是指 MVVM 中的“视图”)?是双向绑定吗?