Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / DataGrid SelectedCells Property и событие SelectedCellsChanged / 1 сообщений из 1, страница 1 из 1
10.06.2015, 18:22
    #38981505
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid SelectedCells Property и событие SelectedCellsChanged
Суть такая:
при включении режима выделения по ячейках SelectionUnit="Cell" SelectionMode="Extended"
в DataGrid'е можно выделать группу ячеек 1 нажатием мышки.
В тот момент когда пользователь тянет курсор по ячейкам DataGrid генерирует событие SelectedCellsChanged при каждом обновлении количества выделенных ячеек.
Решил малость подшаманить, чтоб выделение событие о изменении выделения возбуждалось только когда я закончил выделять ячейки. Но косяк в том, что вся эта мишура с выделением закрыта, все флаги private, методы не переопределяются.

Я пока вижу 2 варианта решения проблемы:

а) извлекать приватное поле через рефлексию. На сколько я понимаю, это довольно медленно и не очень красиво.
Хоть скорость в этом случаи не критична и рефлексия дает точно определить, происходит сейчас прокрутка или нет, получить какой то CallBack по её завершению будет нельзя. По этому проверять придется каждый раз в SelectedCellsChanged и дай бог, если эти флаги снимаются раньше, чем вызывается это событие.

б) ожидать события LostMouseCapture, так как для вычисления выделенной области DataGrid захватывает мышку после нажатия. В тот момент, когда мы мышку отпустили она высвобождается и мы ловим это событие вместо SelectedCellsChanged.
В других случаях сам DataGrid мышку не захватывает, только его потомки.

Собственно, жду вашего мнения, как лучше
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / DataGrid SelectedCells Property и событие SelectedCellsChanged / 1 сообщений из 1, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]