Ale*_*lex 28 wpf observablecollection wpfdatagrid
我知道WPF datagrid有"RowEditEnding"事件,但是我需要在Row调试之后触发事件,以检查新添加的行是否重复并合并重复的行.我的datagrid将"CanUserAddRow"属性设置为True.
我正在使用EntityObservableCollection扩展ObservableCollection以使我的实体与集合同步.所以,我考虑过OnCollectionChanged事件,但是一旦用户点击新项目占位符行,就会引发"InsertItem"事件,这意味着该对象仍然是空的,我无法检查是否有重复.
反正我是否可以举起RowEditEnded活动?
谢谢...
Mah*_*ssa 27
private void dgrid_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
{
if (this.dgrid.SelectedItem != null)
{
(sender as DataGrid).RowEditEnding -=dgrid_RowEditEnding;
(sender as DataGrid).CommitEdit();
(sender as DataGrid).Items.Refresh();
(sender as DataGrid).RowEditEnding += dgrid_RowEditEnding;
}
else Return;
//then check if the newly added row is duplicated
}
Run Code Online (Sandbox Code Playgroud)
您可以UpdateSourceTrigger=PropertyChanged在数据网格的属性成员的绑定上使用。这将确保在CellEditEnding触发时更新已经反映在可观察集合中。看到这篇文章/sf/answers/1906747041/
小智 1
尝试为您的数据网格设置 CommitEdit() 函数。我在这里使用它:
private void DataGrid_BeginningEdit(object sender, DataGridBeginningEditEventArgs e)
{
this.MyDataGrid.CommitEdit(DataGridEditingUnit.Row, false);
}
Run Code Online (Sandbox Code Playgroud)