Разрабатываю приложение для работы с БД SQL Server на C#/WPF.
В приложении есть форма в которой справа DataGrid и посредством Drag&Drop осуществляется перетягивание элементов в левую часть. После перетягивания, свойство элемента DataGridRow.IsEnabled устанавливается в false, чтобы его невозможно было перетянуть дважды. И вот тут возникла проблема:
После перетягивания, случайным образом (на ширину приблизительно видимой области DataGrid) элементы получают то-же свойство IsEnabled = false, что и перемещаемый элемент.
Если промотать DataGrid вниз/вверх, элемент со свойством IsEnabled = false, снова становится доступным.
Подскажите, как этого можно избежать и что я делаю неверно?
А так-же, если не сложно, где можно почитать про такое поведение DataGrid (MSDN вроде весь перекопал)?
UPDATE 28.12.2015
Исправил проблему воспользовавшись советом Stack с привязкой к источнику данных.
Ответ
DataGridItem, DataGridRow - это контейнеры для данных. Если контейнер подключен к источнику данных, т.е. определен Binding, то WPF использует контейнеры повторно. Это значит, что менять прямо свойства контейнера не надо, а надо менять сам источник данных. Пример реализации drag'n'drop посмотрите в моем ответе тут
Комментариев нет:
Отправить комментарий