@SMARTi

Как получить измененный объект при редактировании строки в DataGrid WPF?

Изменяю строку в DataGrid, затем перевожу фокус на другую строку, у DataGrid вызывается событие RowEditEnding, но в параметрах приходит старый объект без изменений.
Привязка данных к DataGrid:
var myObjectList = new List<MyObject>();
/* Заполняю список */
myObjectDataGrid.ItemsSource = myObjectList;

Обработка события RowEditEnding:
private void MyObjectDataGrid_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
{
      var myObjectRow = e.Row.Item as MyObject; //Сюда приходит объект без изменений
}

Где же все таки найти измененную строку?
  • Вопрос задан
  • 1934 просмотра
Решения вопроса 1
@SMARTi Автор вопроса
Ответ найден, в XAML разметке в привязке нужно добавить свойство UpdateSourceTrigger=PropertyChanged т.е. у меня было так:
<DataGrid x:Name="HistoryDataGrid" RowEditEnding="HistoryDataGrid_RowEditEnding"></DataGrid>

а сделать нужно так:
<DataGrid x:Name="HistoryDataGrid" RowEditEnding="HistoryDataGrid_RowEditEnding" AutoGenerateColumns="False">
                        <DataGrid.Columns>
                            <DataGridTextColumn Binding="{Binding Action, UpdateSourceTrigger=PropertyChanged}" Header="Действие"/>
                            <DataGridTextColumn Binding="{Binding Person, UpdateSourceTrigger=PropertyChanged}" Header="Персона"/>
                            <DataGridTextColumn Binding="{Binding Date, UpdateSourceTrigger=PropertyChanged}" Header="Дата"/>
                        </DataGrid.Columns>
                    </DataGrid>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы