在'addnew'开始的交易中,不允许WPF数据网格'newitemplaceholderposition'

bat*_*ulz 6 wpf datagrid

我有一个tabControl.在其中一个tabitem我有一个usercontrol,它包含一个具有CanUserAddRows ="True"的数据网格.用户可以在列中键入数据并按下输入创建的新行(我假设datagrid执行此CanzserAddRows ="True").问题是当我输入数据并更改标签时,我得到此异常"在'Addnew'开始的交易期间不允许使用"WPF datagrid'newitemplaceholderposition'"

有什么建议可以避免吗?

我试图将dg.CommitEdit()放在usercontrol.unloaded()上.我没有得到例外,但我没有得到新的行.

小智 3

我遇到了同样的问题...这里有一些片段描述了我如何解决它。请注意,就我而言,我想拒绝更改以避免错误。如果您想提交更改,这可能会引导您走向正确的方向。

1a) 使用数据网格上的 InitializingNewItem 事件来捕获添加行。

private void mydatagrid_InitializingNewItem(object sender, InitializingNewItemEventArgs e)
    {
        _viewmodel.NewRowDefaults((DataRowView)e.NewItem);
    }
Run Code Online (Sandbox Code Playgroud)

1b) 在本例中,我在视图模型中调用一个方法来填充行默认值并保存对该行的引用。

    private DataRowView _drvAddingRow { get; set; }
    public void NewRowDefaults(DataRowView drv)
    {
        _drvAddingRow = drv;
        ...
    }
Run Code Online (Sandbox Code Playgroud)

2) 然后,当您需要拒绝更改时(在通知属性更改或无论您的情况是什么之前),请在捕获的数据行视图上使用 CancelEdit 方法。

 _drvAddingRow.CancelEdit();
Run Code Online (Sandbox Code Playgroud)