2012-06-05 3 views
0

У меня есть datagrid и одна панель. Когда я нажимаю на любую строку, все данные должны появляться на этой панели. И когда я редактирую ячейку и после редактирования, если я нажимаю другую ячейку той же строки, панель должна быть немедленно обновлена. Мой datagrid связан через источник элемента (таблица данных), поэтому, если я делаю какие-либо изменения в сетке (добавление/удаление/редактирование), обновляется исходный код источника и обновляется панель элементов.WPF CellEditing issue - перезагрузить строки datagrid

Чтобы достичь элемента редактирования ячейки, я использую следующий код, и он работает.

void DataGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e) 
    { 
     if (!isManualEditCommit) 
     { 
      isManualEditCommit = true; 
      DataGrid grid = (DataGrid)sender; 
      grid.CommitEdit(DataGridEditingUnit.Row, true); 
      isManualEditCommit = false;   
     } 
    } 

Проблема: Только вопрос, когда эта строка вызывается (grid.CommitEdit), это в основном загружаются все строки again.and если DataTable является действительно большим, чем требуется несколько секунд, чтобы загрузить все строки. Если я не фиксирую сетку, тогда мои изменения datagrid появляются на панели после того, как я нажму на другую строку. Я хочу достичь этого, когда я нажимаю на другую ячейку той же строки, не загружая строки снова.

Вот изображение

enter image description here

Pls помочь

Благодаря

ответ

0

это общая ловушкой в ​​DataGrid: логика фиксации. Решение, которое я нашел (оно было логическим, а не номерами), состояло в том, чтобы создать собственный пользовательский DataGridColumn, с моими триггерами привязок, установленными в PropertyChanged, чтобы обновить контент сразу и не только при фиксации. Конечно, это небольшая работа, но столбец стандартов DataGrid не позволит вам изменить эту логику фиксации.

Смежные вопросы