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“是啥,可在后期再做解释。