c# - WPF RowEditEnding 返回旧值

标签 c# wpf

我在 WPF 中绑定(bind)了一个 dataGrid 事件,这样我就可以跟踪一行是否更新了。

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

所以我的目标是在行被修改的情况下获取该行的新值,但它只返回旧值。当我第二次编辑它时,它返回新值。这是为什么?

最佳答案

Why is that?

RowEditEnding 事件发生在行编辑被提交或取消之前:https://msdn.microsoft.com/en-us/library/system.windows.controls.datagrid.roweditending(v=vs.110).aspx .

你真正应该做的是实现 IEditableObject Skill 类中的接口(interface)并处理 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;
    }
}

关于c# - WPF RowEditEnding 返回旧值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44009585/

相关文章:

c# - SignalR:客户端断开连接

wpf - 如何在加载元素时运行特定的 GoToStateAction-with-DataTrigger

c - WPF : How can I sendkeys to another control without taking focus away from the target control

c# - 使 wsHttpBinding 替代 netTcpBinding 的场景是什么

c# - 如何在不显示与 Excel 互操作的保存对话框的情况下保存工作簿?

c# - WPF UI 线程在 TreeView 中加载一堆项目时卡住

c# - 在WPF(MVVM)中将数据绑定(bind)到 subview

javascript - 如何在 CheckboxList selectedIndexChange 上显示确认框?

wpf - 使用 Blend 生成的 xaml

c# - 全局保存,检测和阻止更改