Я использовал вариант, основанный на WPF - это пример для всей строки, и он работал!:
(sender as DataGrid).RowEditEnding -= DataGrid_RowEditEnding;
foreach (var textColumn in dataGrid2.Columns.OfType<DataGridTextColumn>())
{
var binding = textColumn.Binding as Binding;
if (binding != null)
{
var boundItem = dataGrid2.CurrentCell.Item;
var propertyName = binding.Path.Path;
var propInfo = boundItem.GetType().GetProperty(propertyName);
propInfo.SetValue(boundItem, NEWVALUE, new object[] { });
}
}
(sender as DataGrid).RowEditEnding += DataGrid_RowEditEnding;
PS: убедитесь, что вы используете типы значений, допустимые для столбца (возможно, с помощью оператора switch).
т.д .:
включить propertyName или propInfo ... propInfo.SetValue (boundItem, (type) NEWVALUE, новый объект [] {});
switch (propertyName)
{
case "ColumnName":
propInfo.SetValue(boundItem, ("ColumnName"'s type) NEWVALUE, new object[] { });
break;
default:
break;
}