|
DataGrid SelectedCells Property и событие SelectedCellsChanged
|
|||
---|---|---|---|
#18+
Суть такая: при включении режима выделения по ячейках SelectionUnit="Cell" SelectionMode="Extended" в DataGrid'е можно выделать группу ячеек 1 нажатием мышки. В тот момент когда пользователь тянет курсор по ячейкам DataGrid генерирует событие SelectedCellsChanged при каждом обновлении количества выделенных ячеек. Решил малость подшаманить, чтоб выделение событие о изменении выделения возбуждалось только когда я закончил выделять ячейки. Но косяк в том, что вся эта мишура с выделением закрыта, все флаги private, методы не переопределяются. Я пока вижу 2 варианта решения проблемы: а) извлекать приватное поле через рефлексию. На сколько я понимаю, это довольно медленно и не очень красиво. Хоть скорость в этом случаи не критична и рефлексия дает точно определить, происходит сейчас прокрутка или нет, получить какой то CallBack по её завершению будет нельзя. По этому проверять придется каждый раз в SelectedCellsChanged и дай бог, если эти флаги снимаются раньше, чем вызывается это событие. б) ожидать события LostMouseCapture, так как для вычисления выделенной области DataGrid захватывает мышку после нажатия. В тот момент, когда мы мышку отпустили она высвобождается и мы ловим это событие вместо SelectedCellsChanged. В других случаях сам DataGrid мышку не захватывает, только его потомки. Собственно, жду вашего мнения, как лучше ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2015, 18:22 |
|
|
start [/forum/topic.php?fid=21&fpage=16&tid=1440849]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
51ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
35ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 147ms |
0 / 0 |