博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

GridSplitterProperties

Posted on 2011-08-26 23:49  linFen  阅读(1781)  评论(0编辑  收藏  举报

这个示例演示了GridSplitter控件的使用。

GridSplitter派生于Thumb,只能使用于Grid中,而且要指定它所在的rowcolumn位置(以及行和列的span)

GridSplitter split = new GridSplitter();

split.Width = 6;

grid.Children.Add(split);

Grid.SetColumn(split, 2);

Grid.SetRow(split, 1);

GridSplitter可以和其它元素共享相同的单元格,这就存在谁遮挡了谁的问题——后出现的元素总是在前面,为此,需要设置margin,以避免重叠:

split.Margin = new Thickness(10);

一般会让GridSplitter跨越整行或整列,比较合理:

Grid.SetRowSpan(split, 3);

Grid.SetColumnSpan(split, 3);

一般把GridSplitter单独放在一个或一组单元格中

在这个例子中,通过设置GridSplitter的左对齐,可以看到遮挡效果,因为在Grid11)这个位置,有两个元素,GridSplitter是后出现的元素:

<StackPanel Grid.Row="1" Grid.Column="1" Background="Red">

<TextBlock>Row 1 Col 1</TextBlock>

</StackPanel>

<GridSplitter Name="myGridSplitter" Grid.Column="1" Grid.Row="1" Width="5"/>

下面讨论GridSplitter的几个属性:

1ShowsPreview属性,默认为fasle,也就是说拖动GridSplitter时看不到效果。而设置为true,则要等到松开鼠标,鸽子才会改变尺寸。

2DragIncrement属性,设置这个值,可以决定每次鼠标拖动的距离。默认值为1

3KeyboardIncrement属性,设置每按下一次箭头键时移动 GridSplitter 控件的距离。默认值为1

VerticalAlignmentHorizontalAlignment,是用来控制splitter是水平的还是垂直的。默认情况下,HorizontalAlignmentRightVerticalAlignmentStretch,此时splitter位于格子的右边,移动splitter会左右移动它所在列的宽度分配。我们可以改变HorizontalAlignmentLeftCenter,而保持VerticalAlignmentStretch不变。

我们可以通过splitterResizeBehavior枚举属性,改变上述行为,让我们选择哪个列会被splitter影响:

CurrentAndNext 等效于splitter靠右

PreviousAndCurrent等效于splitter靠左

PreviousAndNext 等效于splitter居中

BasedOnAlignment 等效于由splitter的HorizontalAlignment和VerticalAlignment来决定

相应的,设置HorizontalAlignmentStretchVerticalAlignmentTopBottomCenter,从而使splitter为水平的。

我们可以利用ResizeDirection属性,改变splitter影响的方向,有三种枚举值:Auto、Columns、Rows。对于水平splitter,按理说应该是上下移动,但是如果把ResizeDirection属性设为Columns

则可以左右移动splitter,但是splitter的效果就看不到了。