2011-08-03 6 views
1

현재 MVVM을 사용하는 C#의 WPF 프로젝트에서 작업 중입니다. 이 프로젝트에는 항목 소스의 데이터 행마다 사용자 정의 컨트롤을로드하는 목록 상자가 있습니다.중첩 된 목록 상자의 마우스 휠

내 컬렉션의 각 항목에 대해 추가되는 사용자 정의 컨트롤에는 데이터베이스에서 채워지는 목록 상자도 들어 있습니다. 이 두 번째 목록 상자는 종종 커지므로 각 항목을 첫 번째 목록 상자의보기보다 크게 만듭니다.

내 질문은 내 목록 상자를 부드럽게 스크롤하는 방법입니다. 지금은 한 항목의 상단에서 다음 항목의 상단으로 이동합니다. 각 항목은 목록 상자의보기보다 크기 때문에 각 항목의 상단에서 다음 항목으로 건너 뛰지 않고 스크롤 할 수 있어야합니다.

이 작업을 수행하기 위해 scrollview를 사용했지만 목록 상자가 마우스 휠 이벤트를 가로 채고 스크롤 막대 위에 마우스를 놓지 않고 스크롤 할 수 없습니다.

더 좋은 방법이 있나요?

업데이트 :
scrollview 컨트롤을 사용하여 부드러운 스크롤을 얻을 수 있지만 스크롤 뷰 내부에 마우스를 스크롤하는 동안 스크롤 할 수 없습니다. 스크롤하려면 마우스를 스크롤바 위에 올려야합니다.

마치 내 마우스 이벤트를 가로채는 것과 같습니다.

답변

2

목록 상자에 다음 속성 ScrollViewer.CanContentScroll="False"을 설정할 수 있습니다.

+0

이것은 내가 가지고있는 것을 향상시키는 것처럼 보이지 않습니다. 현재 scrollviewer로 부드럽게 스크롤 할 수는 있지만 스크롤 뷰어의 항목 위에 마우스를 올려 놓으면 스크롤 할 수 없습니다. 마우스를 스크롤하려면 스크롤 뷰 컨트롤의 스크롤 막대 위에 마우스를 올려 놓아야합니다. –

+0

[Snoop] (http://snoopwpf.codeplex.com/)을 사용하고 누가 마우스 휠 이벤트를 처리하는지 확인하십시오. – dowhilefor

4

ListBox가 아닌 ItemsControl을 사용하여 수행하려는 작업을 수행 할 수있었습니다. 그것은 ListBox 컨트롤처럼로드하고 내 데이터를 모두 가져 와서 ScrollView가 스크롤을 처리하게합니다. 목록 상자처럼 마우스 휠을 가로 채지 않았습니다.

항목을 선택할 필요가없는 경우 ItemsControl을 사용하는 것이 좋습니다.

+0

나를 위해 완벽하게 작동합니다 - 목록 상자 내의 목록 상자가 목록 상자 내의 항목 컨트롤로 변경되었습니다. 감사! – Dean