2008-10-16 3 views
3

У меня есть ListView WPF, который в настоящее время прокручивается каждый раз, когда я нажимаю элемент, который только частично виден. Как я могу заставить элемент управления прокручивать этот элемент в виде (вместо этого просто выбрать частично видимый)? Такое поведение очень раздражает при выполнении перетаскивания с этого элемента управления.В WPF ListView, как я могу предотвратить автоматическую прокрутку?

Спасибо.

Добавлено: Я ищу решение, позволяющее самому управлять элементом управления при нажатии на содержимое, которое, по мнению руководства, не полностью видно. Часто это на несколько пикселей, и прокрутка не требуется.

ответ

5

Элементы прокручиваются в поле зрения, потому что поведение по умолчанию в клике элемента списка - это вызов BringIntoView(). Вы можете добавить обработчик события для события RequestBringIntoView и поймать его до того, как он выскочит из списка ListViewItems в ScrollViewer. В своем обработчике проверьте границы отправителя относительно видимой области, и если вы решите, что вам не нужно прокручивать, установите флаг Handled для события в true.

+1

Чтобы уточнить, используйте событие PreviewMouseDown, чтобы проглотить его. – 2008-10-17 15:47:54

1

Поскольку я в настоящее время в дороге, я не могу попробовать это, но вы пытались играть с CanContentScroll и/или обертывать прокручиваемое содержимое в панель, как это было предложено ScrollViewer Overview on MSDN?

В худшем случае вы можете заменить ListViewItemsPanel на взломанный ScrollViewer с коэффициентом «пушистый», например. путем захвата события RequestBringIntoView.

Смежные вопросы