Tag: scrollviewer mousewheel

ScrollViewer鼠标滚轮不工作

我目前正在做我的第一个WPF项目,并试图做一个ListView滚动。 起初,我认为这可以很容易地通过简单地限制列表视图的宽度和高度,从而迫使一个滚动条自动出现,每当内容超过其空间。 这看起来很好,但由于处理PreviewMouseDown事件(这使拖动列表的项目)select一个项目后,它不起作用。 第二次尝试 (使用ScrollViewer) <ScrollViewer> <ListView ItemsSource="{Binding FileViewModels}" PreviewMouseDown="ListView_MouseMove" Height="450" Width="200"/> </ScrollViewer> 当然,当列表的内容变得大于最大高度时,这会导致第二个滚动条。 select一个项目后,拖动栏仍然不起作用。 第三 (相当愚蠢的) 尝试 (禁用滚动条复制) <ScrollViewer> <ListView ItemsSource="{Binding FileViewModels}" PreviewMouseDown="ListView_MouseMove" Height="450" Width="200" ScrollViewer.VerticalScrollBarVisibility="Disabled" ScrollViewer.HorizontalScrollBarVisibility="Disabled"/> </ScrollViewer> 这删除了滚动条复制,并通过鼠标滚轮启用滚动,但禁用滚动条,所以你不能通过点击和拖动它。 第四次尝试 (ScrollViewer的大小不变) <ScrollViewer Height="450" Width="200"> <ListView ItemsSource="{Binding FileViewModels}" PreviewMouseDown="ListView_MouseMove"/> </ScrollViewer> 从ListView中移除宽度/高度约束并将其移至ScrollViewer。 这使滚动条和删除重复。 不幸的是,鼠标滚轮不再工作(拖动滚动条工作正常)。 请问有人请向我解释为什么鼠标滚轮不再工作,以及如何解决这个问题? 编辑也许我应该回到我的第一个解决scheme。 显然,ListView的模板已经包含了一个ScrollViewer。 剩下的问题就是因为处理过的PreviewMouseDown事件(在这种情况下通过鼠标滚动仍然有效)select一个项目后,我不能拖动滚动条。 我是否应该以不同的方式处理项目的拖动(在我想添加滚动条之前,它可以正常工作)? 或者有没有办法来检测光标是否在滚动条上方(这样我可以取消select启用滚动的项目)? 或者还有其他build议吗?