我想在WPF DataGridRow上写一个触发器,如下所示-
当用户对该行的任何单元格进行任何更改时,应使用特定值更新同一行的最后一个单元格。
请帮忙..。
发布于 2014-08-12 05:08:18
我使用Brian Hinchey在以下链接- How to get property change notifications with EF 4.x DbContext generator上提供的解决方案解决了我的问题
发布于 2014-08-06 11:21:07
我不确定用扳机能不能做到这一点。
对于基于MVVM的解决方案,可以更改实体以实现IEditableObject。当您在DataGrid中提交一个单元格更改(例如关闭或按Enter键)时,实体的IEditableObject.EndEdit()方法将被调用。然后,您可以在那里更新最后一个单元格的绑定属性。
(出于某种原因,EndEdit()被调用了两次,这在IEditableObject与DataGrids一起使用时似乎是一个奇怪的错误。这个问题提到了here)。
如果希望更多地控制If /何时调用IEditableObject.EndEdit(),则可以使用DataGrid RowEditEnding和CellEditEnding事件。例如,下面的RowEditEnding事件处理程序代码将确保实体的EndEdit()方法只有在提交整个行(而不是在每个单元格提交之后)才被调用:
private void RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
{
if (_isCommittingEdit || e.EditAction == DataGridEditAction.Cancel)
{
return;
}
if (e.EditAction == DataGridEditAction.Commit)
{
_isCommittingEdit = true;
try
{
grid1.CommitEdit(DataGridEditingUnit.Row, true);
}
finally
{
_isCommittingEdit = false;
}
}
}我发现调用DataGrid.CommitEdit()会再次触发相同的事件,导致堆栈溢出,因此_isCommittingEdit变量将阻止这种情况发生。(我很想知道这是另一种怪癖还是我做错了什么事!)
https://stackoverflow.com/questions/25155794
复制相似问题