我在 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/