WPF Datagrid行编辑"ENDED"事件

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)

  • 这应该被选为接受的答案.谢谢Maher Ben Issa! (2认同)

Shl*_*lum 5

您可以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)