WPF GridSplitter

时间:2010-07-30 06:19:08

标签: wpf gridsplitter

使用WPF GridSplitter时,我遇到了奇怪的行为。

我将相应的Horizo​​ntalAlignment属性设置为拉伸,当我调整它们的大小时,GridSplitter会跳转,有时会回到原来的位置,或者只是在我拖动它们时跳来跳去......

是否有其他人看到或知道可能导致此问题的原因?

由于

这是XAML

<GridSplitter x:Name="grdTreeSplitter" Grid.Row ="1" 
     BorderBrush="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}" 
     BorderThickness="1"
     HorizontalAlignment="Stretch" Panel.ZIndex="0" 
     ResizeBehavior="PreviousAndNext" ResizeDirection="Rows"
     SnapsToDevicePixels="False" ShowsPreview="False" UseLayoutRounding="False"
     DragIncrement="1"
     DragDelta="grdSideExplorerSplitter_DragDelta">
  <GridSplitter.Visibility>
    <MultiBinding 
      ......
    </MultiBinding>
  </GridSplitter.Visibility>
</GridSplitter>

4 个答案:

答案 0 :(得分:5)

我有同样的问题,发现相同的代码在Silverlight中工作正常,而在WPF中被破解,所以我认为它可能是WPF的一个问题。我的修复是推出我自己的GridSplitter版本,这个版本太大了,无法放在这里,所以你可以在my blog.上看到它

答案 1 :(得分:2)

我有同样的问题,似乎我们正在绘制很多东西。如果我们设置了ShowsPreview属性。在尝试更新屏幕时,用户可以在抓握手柄外拖动。但是用户线程应该与图形渲染线程分开,所以我不知道。如果用户选择分割器并使用键盘上的向上和向下箭头,它也可以正常工作。写这篇文章的时候啊。我尝试使用更大的值来进行dragincrement,这似乎也有效。好的解决方案这是两个同一方向的网格分裂器(屏幕的三个部分)我不知道这是否也是你的设置。

答案 2 :(得分:0)

当我在网格列中有width =“1 *”时,我的网格探测器正在跳跃。 我以像素为单位设置尺寸并停止跳跃。

答案 3 :(得分:0)

我意识到这是旧的,但也许这会对某人有所帮助。我遇到的问题是,快速分离器移动后分离器会跳回到原始位置。我的解决方案是在分割器的CancelDrag事件处理程序中调用PreviewMouseUp

<强>买者

这可能会或可能不会帮助其他人,因为我正在使用经过大量修改的派生类以及其他功能(包括管理我自己的动作),而我不知道它是否会在一个简单的过程中提供帮助(或者根本不起作用)场景。