我甚至无法理解这一点。我在.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>
答案 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}}