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

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

事情起因

测试报告说存在滚动条不能拖动的情况,我们几个开发人员多次测试都未重现该问题。后面发现是操作系统的问题,在XP和部分Win7上会存在该问题。而在我们开发人员的机器上,包括Win7 SP1,Windows Server2008上都未出现该问题。

该问题的具体表现是拖动ScrollViewer时的滚动条不能滚动里面的内容,但是点击滚动条上下方的RepeatButton(即通常情况下的三角形按钮)却能滚动里面的内容。

本以为找到了问题,解决起来会很快。但是我们几个同事试了好久,都没找到问题。我也简单看了下,开始以为会是ScrollChanged事件响应将滚动条滚回去了,结果不是。后面就忙其他的去了。再后来,另外一个同事发现是外层ScrollViewer的IsDeferredScrollingEnabled设为了True。

下面是这个情况的一个简单示例,感兴趣的朋友可以试试。

<Window x:Class="ScrollViewerTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="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&
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值