Проблема с 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 не позволит вам изменить логику фиксации.

Другие вопросы по тегам