WPF行编辑结束返回旧值

4

我在WPF中找到了一个dataGrid事件,以便我可以跟踪某一行是否已更新。

private void dataGrid_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
{
    var text = e.Row.Item as Skill;
}

我的目标是在行被修改后获取新的值,但它只返回旧的值。当我第二次编辑时,它才会返回新的值。为什么会这样呢?


我不想添加新项目。我想获取已编辑行及其新值。 - Tom el Safadi
你想要做什么?e.EditAction == DataGridEditAction.?(commit?)(在你的方法中使用这个条件) - Péter Hidvégi
我该怎么办?我不明白。 上面的代码只返回具有旧值的行。 - Tom el Safadi
2个回答

7
为什么会这样呢? RowEditEnding事件在行编辑提交或取消之前发生:https://msdn.microsoft.com/en-us/library/system.windows.controls.datagrid.roweditending(v=vs.110).aspx
你真正需要做的是在Skill类中实现IEditableObject接口,并在EndEdit()方法中处理逻辑。
另一个选项是在事件处理程序中显式提交编辑:
private bool _handle = true;
private void dg2_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
{
    if (_handle)
    {
        _handle = false;
        dg2.CommitEdit();
        var text = e.Row.Item as Skill;
        //...
        _handle = true;
    }
}

0

或者,您还可以将相应绑定的UpdateSourceTrigger属性设置为“PropertyChanged”...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接