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