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>

WPF:从Scrollviewer获取滚动条上的事件

从我对您的理解来看,每当用户向左或向右拖动滚动条时,您都试图访问ScrollViewer。为了做到这一点,使用ScrollViewerScrollChanged事件。在事件处理程序中,您将拥有sendere参数。要访问ScrollViewer的属性,只需将sender转换为ScrollViewer,如下所示:

ScrollViewer currentViewer = (ScrollViewer)sender;

这应该允许您访问有关ScrollViewer的所有信息。

如果你在Canvas的宽度触发ScrollChanged事件时遇到问题,那么在事件处理程序中放入一个检查,看看事件是来自鼠标还是来自Canvas的宽度改变。