Колесико мыши во вложенных списках

В настоящее время я работаю над проектом WPF на C # с использованием MVVM. В этом проекте у меня есть список, который загружает пользовательский элемент управления для каждой строки данных в моем источнике элементов.

Пользовательский элемент управления, который добавляется для каждого элемента в моей коллекции, также содержит список, который заполняется из базы данных. Это второе поле со списком часто увеличивается, и поэтому каждый элемент становится больше, чем вид первого окна со списком.

Мой вопрос в том, как сделать так, чтобы в моем списке была плавная прокрутка. Прямо сейчас он перепрыгивает с вершины одного элемента на вершину следующего. Так как каждый элемент больше, чем вид списка, мне нужно иметь возможность прокручивать, не переходя от вершины каждого элемента к следующему.

Для этого я использовал режим прокрутки, но окно списка затем перехватывает событие колеса мыши и не позволяет мне выполнять прокрутку без наведения курсора на полосу прокрутки.

Есть лучший способ сделать это?

ОБНОВЛЕНИЕ:
Я могу получить плавную прокрутку с помощью элемента управления scrollview, но я не могу прокручивать, пока моя мышь находится внутри scrollview. Мне нужно навести указатель мыши на полосу прокрутки, чтобы прокрутить ее.

Это похоже на то, что что-то перехватывает мое событие колеса мыши.


person Wade K    schedule 03.08.2011    source источник


Ответы (2)


Мне удалось добиться того, что я пытался сделать, используя ItemsControl, а не ListBox. Он загрузился так же, как элемент управления ListBox, втянул в него все мои данные и позволил ScrollView обрабатывать прокрутку. Он не перехватил колесо мыши, даже как окно со списком.

Если вам не нужно иметь возможность выбирать элемент, я настоятельно рекомендую использовать ItemsControl.

person Wade K    schedule 04.08.2011
comment
У меня отлично работает - список в списке был изменен на элемент управления в списке. Спасибо! - person Dean; 05.06.2014

Вы можете установить в Listbox следующее Свойство ScrollViewer.CanContentScroll="False".

person dowhilefor    schedule 03.08.2011
comment
Похоже, это не улучшает то, что у меня есть. В настоящее время я могу получить плавную прокрутку с помощью средства просмотра прокрутки, но я все еще не могу прокручивать, пока моя мышь находится над элементами в средстве просмотра прокрутки. Моя мышь должна находиться на полосе прокрутки элемента управления scrollview для прокрутки. - person Wade K; 04.08.2011
comment
Я бы посоветовал вам использовать Snoop и проверить, кто обрабатывает событие с колесом мыши. - person dowhilefor; 04.08.2011