你的位置:首页 > 软件开发 > ASP.net > WPF中ScrollViewer嵌套引发滚动失灵的Bug

WPF中ScrollViewer嵌套引发滚动失灵的Bug

发布时间:2015-08-23 03:00:11
事情起因测试报告说存在滚动条不能拖动的情况,我们几个开发人员多次测试都未重现该问题。后面发现是操作系统的问题,在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

wpf
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。