WPF:从Scrollviewer获取滚动条上的事件
本文关键字:事件 滚动条 获取 Scrollviewer WPF | 更新日期: 2023-09-27 18:17:09
我希望只有当用户向左或向右拖动滚动条时才能获得一个事件。
当我使用MouseClick事件时,它也包含整个画布…
我发现有一个事件处理程序"ScrollChanged",但这并不是我真正想要的,因为我的画布的宽度每秒增长10,导致每秒10次事件ScrollChanged。
我想通过用鼠标拖动滚动条来获得一个事件
<ScrollViewer x:Name="coordinateScroll" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Margin="75,0,0,0" Width="1125" Height="750" Background="Transparent" MouseWheel="coordinateSystemBackground_MouseWheel" MouseDoubleClick="coordinateScroll_MouseDoubleClick " ScrollChanged="coordinateScroll_ScrollChanged" >
<Canvas x:Name="coordinateSystem" HorizontalAlignment="Left" VerticalAlignment="Top" Cursor="Cross" UseLayoutRounding="False" Width="1125" Height="720" Background="Transparent" MouseWheel="coordinateSystemBackground_MouseWheel" >
</Canvas>
</ScrollViewer>
从我对您的理解来看,每当用户向左或向右拖动滚动条时,您都试图访问ScrollViewer
。为了做到这一点,使用ScrollViewer
的ScrollChanged
事件。在事件处理程序中,您将拥有sender
和e
参数。要访问ScrollViewer
的属性,只需将sender
转换为ScrollViewer
,如下所示:
ScrollViewer currentViewer = (ScrollViewer)sender;
这应该允许您访问有关ScrollViewer
的所有信息。
如果你在Canvas的宽度触发ScrollChanged事件时遇到问题,那么在事件处理程序中放入一个检查,看看事件是来自鼠标还是来自Canvas的宽度改变。