Datagrid: Остановить / Отменить транзакцию AddNew или EditItem? - PullRequest
3 голосов
/ 18 октября 2011

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

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

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

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

Проблема теперь в том, что в некоторых случаях происходит сбой программы с «Исключением недопустимой операции», в котором говорится, что невозможно выполнить Refresh () «при выполнении AddNew или EditItem - Transaction» в сетке данных. 1009 *

Я не знаю точно, где инициируются эти транзакции, но я заметил, что исключение возникает только тогда, когда Mouse-Courser был активен в одной ячейке сетки данных в тот момент, когда вызывается функция Refresh ().

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

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