WPF:从Scrollviewer在滚动条上获取一个事件

时间:2013-06-06 13:10:25

标签: c# wpf scrollviewer

我只想在用户向左或向右拖动滚动条时才能获得活动。

当我使用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>

1 个答案:

答案 0 :(得分:1)

从我理解你的方式来看,只要用户向左或向右拖动滚动条,您就会尝试访问ScrollViewer。为此,请使用ScrollChanged的{​​{1}}事件。在事件处理程序中,您将拥有ScrollViewersender个参数。要访问e的属性,只需将ScrollViewer转换为sender,如下所示:

ScrollViewer

这应该允许您访问有关ScrollViewer currentViewer = (ScrollViewer)sender;

的所有信息

如果您遇到了Canvas的宽度触发ScrollChanged事件的问题,那么请检查事件处理程序以查看事件是来自鼠标还是来自Canvas宽度更改。