我在WPF中找到了一个dataGrid事件,以便我可以跟踪某一行是否已更新。
private void dataGrid_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
{
var text = e.Row.Item as Skill;
}
我的目标是在行被修改后获取新的值,但它只返回旧的值。当我第二次编辑时,它才会返回新的值。为什么会这样呢?
我在WPF中找到了一个dataGrid事件,以便我可以跟踪某一行是否已更新。
private void dataGrid_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
{
var text = e.Row.Item as Skill;
}
我的目标是在行被修改后获取新的值,但它只返回旧的值。当我第二次编辑时,它才会返回新的值。为什么会这样呢?
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;
}
}
或者,您还可以将相应绑定的UpdateSourceTrigger属性设置为“PropertyChanged”...