先用这段代码
private void DataGrid_Unloaded(object sender, RoutedEventArgs e)
{
var dataGrid = sender as DataGrid;
dataGrid.CommitEdit(DataGridEditingUnit.Row, true);
}
依然还报同样错,再添加下面这段代码(这段代码貌似可以直接写到Unloaded中就可以不用写dataGrid.CommitEdit(DataGridEditingUnit.Row, true)
)
private void DataGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
var dataGrid = sender as DataGrid;
var itemSource = dataGrid.ItemsSource as ObservableCollection<string>;
var cloneSource = itemSource.Select(p => p).ToList();
if (itemSource != null)
{
var textBox = e.EditingElement as TextBox;
cloneSource[e.Row.GetIndex()] = textBox.Text;
itemSource.Clear();
cloneSource.ForEach(p => itemSource.Add(p));
}
}