如何使GridSplitter“捕捉”到另一个元素?

时间:2012-07-03 11:28:50

标签: c# .net wpf

我有一个数据网格和一个网格分割器:

enter image description here

分割器位于底部,数据网格位于顶部,两者之间有一些空白区域。

我认为如果网格分割器在距离数据网格24个或更少的单位时捕捉到数据网格,它将正常工作。这可以归档吗?

1 个答案:

答案 0 :(得分:1)

我用它来捕捉每个数据网格行:

private void GridSplitterDragCompleted(object sender, DragCompletedEventArgs e)
{
    // We want the grid splitter to snap in grid of 24 units.
    var excess = (int) FooDataGridRowDefinition.Height.Value % 24;

    if (excess == 0)
        return;

    FooDataGridRowDefinition.Height = new GridLength(FooDataGridRowDefinition.Height.Value - excess);
}

数据网格行对我来说都是24,我想我可以动态地获取它们但是现在可以这样做。

XAML:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="Auto" Name="FooDataGridRowDefinition" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>

    <DataGrid Grid.Row="0" />

    <GridSplitter Grid.Row="1" DragCompleted="GridSplitterDragCompleted" />

    <Foo Grid.Row="2" />
</Grid>