WPF(巨坑一)_GridSplitter为什么用键盘控制不了了

WPF(巨坑一)_GridSplitter为什么用键盘控制不了

一、背景

由于要实现某些功能使用到了GridSplitter,然后就写了一个测试工程,并且给GridSplitter写了一个Style:

            <Style TargetType="GridSplitter">
                <Setter Property="DragIncrement" Value="0.5" />
                <Setter Property="KeyboardIncrement" Value="0.5" />
                <Setter Property="AllowDrop" Value="True" />
                <Setter Property="Focusable" Value="True" />
            </Style>

注:DragIncrement和KeyboardIncrement都是double类型的,所以设置为0.5是没有问题的,并且也是可以正常工作的。

二、问题来了

本人将同样的代码移植到项目中发现了几个问题:

1)键盘为什么控制不了

一开始还以为是焦点的问题,然后各种设置焦点还是无效。紧接着我发现了另外一个问题。

2)DragInCrement的实际值怎么不是0.5

这里幸好因为项目中需要使用到移动的单位,所以有将这些值打印出来,所以才发现了这个问题,并且实际的DragInCrement值是1。

三、解决过程

那么这里就可以怀疑了,肯定是由于某些设置导致了double类型无效。于是又将DragIncrement和KeyboardIncrement设置为整型,果然,一切都好了。这里不得不怀疑和像素对齐的设置有关,果然在父控件中发现 UseLayoutRounding="True“,这个设置就是像素对象,所以才导致DragInCrement设置为0.5,实际是1,KeyboardIncrement设置为0.5,实际为0,所以在使用键盘的时候就无效了。

至于UseLayoutRounding="True“是啥,可在后期再做解释。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值