我有一个ListView,其中有很多项目是水平排列的,如果我按住滚动条然后移动它,我可以滚动ListView,但我想用鼠标滚轮向上/向下滚动ListView向左/向右滚动。
<Grid>
<ListView
Margin="10,0,10,0"
AllowDrop="True"
DragEnter="ListView_DragEnter"
DragOver="ListView_PreviewDragOver"
Drop="ListView_Drop"
ItemsSource="{Binding Path=Devices}"
KeyUp="ListView_KeyUp"
PreviewMouseLeftButtonDown="ListView_PreviewMouseLeftButtonDown"
PreviewMouseMove="ListView_PreviewMouseMove"
ScrollViewer.HorizontalScrollBarVisibility="Visible"
TouchDown="ListView_TouchDown"
TouchMove="ListView_TouchMove">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
</Grid>
使用鼠标滚轮水平滚动不起作用。我想使用鼠标滚轮向上/向下滚动ListView以向左/向右滚动。
1条答案
按热度按时间dced5bon1#
它可以通过以下步骤完成。
1.捕获PreviewMouseWheel事件。
1.在ListView中获取ScrollViewer。
1.从
ScrollViewer.HorizontalOffset
获取当前偏移。1.将鼠标滚轮增量除以某个分隔符添加到偏移量中。
1.使用偏移量调用
ScrollViewer.ScrollToHorizontalOffset
。对于分隔线,120将是起点,因为它是默认的鼠标滚轮单位。
这是带有附加属性的示例。
然后,它可以在Xaml中使用。