2

只有当我向左或向右拖动滚动条时,我才想获得一个事件。

当我使用 MouseClick 事件时,它也包含整个画布......

我发现有一个事件处理程序“ScrollChanged”,但这并不是我真正想要的,因为我的画布的宽度每秒增长 10 次,这导致事件 ScrollChanged 每秒增长 10 次。

我只想通过用鼠标拖动滚动条来获得一个事件

        <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>
4

1 回答 1

1

从我对您的理解来看,您试图ScrollViewer在用户向左或向右拖动滚动条时访问。为此,请ScrollChanged使用ScrollViewer. 在事件处理程序中,您将拥有您的sendere参数。要访问 的属性ScrollViewer,只需senderScrollViewer这样转换:

ScrollViewer currentViewer = (ScrollViewer)sender;

这应该允许您访问有关ScrollViewer.

如果您在触发 ScrollChanged 事件时遇到 Canvas 的宽度问题,请检查事件处理程序以查看事件是来自鼠标还是来自 Canvas 宽度变化。

于 2013-06-06T13:19:48.043 回答