事情起因测试报告说存在滚动条不能拖动的情况,我们几个开发人员多次测试都未重现该问题。后面发现是操作系统的问题,在XP和部分Win7上会存在该问题。而在我们开发人员的机器上,包括Win7 SP1,Windows Server2008上都未出现该问题。该问题的具体表现是拖动Scrol ...
事情起因
测试报告说存在滚动条不能拖动的情况,我们几个开发人员多次测试都未重现该问题。后面发现是操作系统的问题,在XP和部分Win7上会存在该问题。而在我们开发人员的机器上,包括Win7 SP1,Windows Server2008上都未出现该问题。
该问题的具体表现是拖动ScrollViewer时的滚动条不能滚动里面的内容,但是点击滚动条上下方的RepeatButton(即通常情况下的三角形按钮)却能滚动里面的内容。
本以为找到了问题,解决起来会很快。但是我们几个同事试了好久,都没找到问题。我也简单看了下,开始以为会是ScrollChanged事件响应将滚动条滚回去了,结果不是。后面就忙其他的去了。再后来,另外一个同事发现是外层ScrollViewer的IsDeferredScrollingEnabled设为了True。
下面是这个情况的一个简单示例,感兴趣的朋友可以试试。
<Window x:Class="ScrollViewerTest.MainWindow" ="http://schemas.microsoft.com/get='_blank'>winfx/2006/xaml/presentation" ="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Width="525" Height="350"> <Grid> <ScrollViewer IsDeferredScrollingEnabled="True"> <Canvas Width="1000" Height="1000" Background="Red"> <ScrollViewer Canvas.Left="200" Canvas.Top="200" Width="100" Height="100"> <Canvas Width="500" Height="500"> <Canvas.Background> <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> <GradientStop Offset="0" Color="Black" /> <GradientStop Offset="1" Color="White" /> </LinearGradientBrush> </Canvas.Background> </Canvas> </ScrollViewer> </Canvas> </ScrollViewer> </Grid></Window>
原标题:WPF中ScrollViewer嵌套引发滚动失灵的Bug
关键词:wpf
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。