Проблема с CellEditing в WPF - перезагрузка строк таблицы данных
У меня есть датагрид и одна панель. Когда я нажимаю на любую строку, все данные должны отображаться на этой панели. И когда я редактирую ячейку и после редактирования, если я щелкаю другую ячейку той же строки, панель должна быть обновлена немедленно. Моя сетка данных связана с источником элементов (таблицей данных), поэтому, если я внесу какие-либо изменения в сетку (добавлю / удалим / отредактирую), мой источник элементов будет обновлен, и в соответствии с источником элемента будет обновлена панель.
Чтобы добиться редактирования ячеек, я использую следующий код, и он работает.
void DataGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
if (!isManualEditCommit)
{
isManualEditCommit = true;
DataGrid grid = (DataGrid)sender;
grid.CommitEdit(DataGridEditingUnit.Row, true);
isManualEditCommit = false;
}
}
Проблема: Единственная проблема заключается в том, что когда эта строка вызывается (grid.CommitEdit), она в основном загружает все строки снова. И если datatable действительно большой, то для загрузки всех строк требуется несколько секунд. Если я не фиксирую сетку, то мои изменения сетки данных появятся на панели после того, как я нажму на другую строку. Я хочу достичь этого, когда я нажимаю на другую ячейку той же строки, не загружая строки снова.
Вот изображение
Пожалуйста, помогите
Спасибо
1 ответ
Это распространенная ошибка DataGrid: логика принятия. Решение, которое я нашел (это были логические, а не числа), состояло в том, чтобы создать свой собственный DataGridColumn с моими триггерами привязок, установленными на PropertyChanged, чтобы содержимое обновлялось сразу, а не только при фиксации. Конечно, это небольшая работа, но столбец стандартов DataGrid не позволит вам изменить логику фиксации.