Datagrid: остановить / отменить транзакцию AddNew или EditItem?

#wpf #datagrid #editmode

#wpf #datagrid #режим редактирования

Вопрос:

Я использую datagrid для отображения координат «прямоугольников выделения», которые пользователь может создать на изображении.

Я использую привязку таблицы данных к наблюдаемой коллекции, поскольку координаты также необходимы для других целей.

Итак, когда пользователь создает новый прямоугольник, в наблюдаемую коллекцию добавляется новая запись.

Чтобы напрямую отобразить координаты нового прямоугольника в datagrid, я должен вызвать «myDatagrid.Товары.Обновить ()».

Теперь проблема в том, что в некоторых случаях программа завершается с ошибкой «Исключение недопустимой операции», в котором говорится, что обновление () не может быть выполнено «во время выполнения AddNew или EditItem — транзакции» в datagrid.

Я точно не знаю, где запускаются эти транзакции, но я заметил, что исключение возникает только тогда, когда курсор мыши был активен в одной ячейке datagrid в момент, когда вызывается Refresh() .

Так что было бы несколько возможных подсказок, которые действительно помогли бы мне:

  • Как я могу «вручную» отменить режим редактирования для всех ячеек datagrid? (конечно, я пробовал DataGrid.CancelEdit() и DataGrid.CommitEdit(), но это не помогает)
  • Что такое EditItem-Transaction / AddItem-Transaction или как я могу остановить ее выполнение?
  • Любые другие идеи по безопасному обновлению привязки без использования DataGrid.Refresh() ..