.Net 4.5.1 GridSplitter只减少列

时间:2014-11-06 00:35:11

标签: wpf

我甚至无法理解这一点。我在.net 4.5.1中有一个网格分析器。我创建了一个新的wpf应用程序,然后将下面的代码放在主窗口上。 我对此的期望:当我将分割器向右拖动时,在有两列的网格中,右边的列应该减小,左边的列应该增加。当我将分割器向左拖动时,左侧的列应缩小,右侧的列应为大小。 我看到的行为:当我将分割器向右拖动时,右侧的列尺寸减小,左侧的列尺寸减小。所以两个文本框的宽度变小了。当我将分离器向左拖动时,分离器停在网格的中心,没有其他任何事情发生。我没有最小宽度或宽度。有没有人对这个有线索?

<Grid>

    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" SharedSizeGroup="A" />
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="*" SharedSizeGroup="A" />
    </Grid.ColumnDefinitions>


    <TextBox Grid.Column="0" FontSize="55" HorizontalAlignment="Stretch"    VerticalAlignment="Stretch" TextWrapping="Wrap" Text="Hi" />
    <GridSplitter Grid.Column="1" Width="5" Background="Transparent" ResizeDirection="Columns" VerticalAlignment="Stretch" />

     <TextBox Grid.Column="2" FontSize="55" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" TextWrapping="Wrap" Text="there" />

</Grid>

1 个答案:

答案 0 :(得分:1)

现在我明白你想要什么。您正在遵循一种方法,即保留GridSplitter的列(中间列)。要遵循此方法,您需要将ResizeBehavior指定为PreviousAndNext以设置调整大小行为以调整前一列和下一列的大小,使当前(中间)列保持不变:

<GridSplitter Grid.Column="1" Width="5" Background="Transparent" 
              ResizeDirection="Columns" VerticalAlignment="Stretch" 
              ResizeBehavior="PreviousAndNext"/>

另外,如果GridSplitter Width足够小并且对包含的列Width没有多大影响,您也不需要为GridSplitter指定单独的列。 。这意味着您只需要2列,将HorizontalAlignment放在第一列或第二列中并不重要。但请注意,将其放在第二列时,Left应为HorizontalAlignment。将它放在第一列时,Right应为GridSplitter(这是默认值)。以下代码将Panel.ZIndex放在第二列中。我们将它放在所有TextBox之后,以确保它在TextBox上面呈现,否则你必须明确且恰当地设置<Grid.ColumnDefinitions> <ColumnDefinition Width="*" SharedSizeGroup="A" /> <ColumnDefinition Width="*" SharedSizeGroup="A" /> </Grid.ColumnDefinitions> <TextBox Grid.Column="0" FontSize="55" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" TextWrapping="Wrap" Text="Hi" /> <TextBox Grid.Column="1" FontSize="55" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" TextWrapping="Wrap" Text="there"/> <GridSplitter Grid.Column="1" Width="5" Background="Transparent"  ResizeDirection="Columns" VerticalAlignment="Stretch" HorizontalAlignment="Left"/>

{{1}}