嵌套列表框中的鼠标滚轮

时间:2011-08-03 15:15:51

标签: wpf mvvm listbox scrollview mousewheel

我目前正在使用MVVM在C#中开发一个WPF项目。在这个项目中,我有一个列表框,为我的项目源中的每一行数据加载一个用户控件。

为我的集合中的每个项目添加的用户控件还包含一个从数据库填充的列表框。第二个列表框通常会增长,因此每个项目都比第一个列表框的视图大。

我的问题是,如何让我的列表框平滑滚动。现在它从一个项目的顶部跳到下一个项目的顶部。由于每个项目都比列表框的视图大,我需要能够滚动而不会从每个项目的顶部跳到下一个项目。

我使用了一个scrollview来实现这一点,但是列表框然后拦截了鼠标滚轮事件,并且不允许我滚动而不将鼠标悬停在滚动条上。

有更好的方法吗?

更新:
我可以使用scrollview控件进行平滑滚动,但是当鼠标在scrollview中时我无法滚动。我必须将鼠标悬停在滚动条上才能滚动。

就像是在拦截我的鼠标轮事件。

2 个答案:

答案 0 :(得分:4)

通过使用ItemsControl而不是ListBox,我能够实现我想要做的事情。它像ListBox控件一样加载,并将所有数据拉入其中,让ScrollView处理滚动。即使像列表框那样,它也没有拦截鼠标滚轮。

如果您不需要选择项目,我强烈建议您使用ItemsControl。

答案 1 :(得分:2)

您可以在列表框中设置以下属性ScrollViewer.CanContentScroll="False"