我有一个 WPF 网格,有四列,仅包含一个 GridSplitter。其中两列(0 和 3)是可缩放的,但一列可缩放列不直接与 GridSplitter(第 2 列)相邻。
第 0 列和第 3 列必须具有相同的初始大小。所以我不能将第 0 列和第 1 列放入嵌套网格中。
我该如何解决这个问题?
<Grid Height="40">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Rectangle Grid.Column="0" Fill="Blue" Margin="8" />
<Rectangle Grid.Column="1" Fill="Yellow" Margin="8" Width="24" />
<GridSplitter Grid.Column="2" Width="8" VerticalAlignment="Stretch" />
<Rectangle Grid.Column="3" Fill="Red" Margin="8" />
</Grid>
编辑:我在nickolay.laptev的帮助下解决了这个问题。
<Grid Height="40">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Rectangle Grid.Column="0" Fill="Blue" Margin="8" />
<Rectangle Grid.Column="1" Fill="Yellow" Margin="8 8 16 8" Width="24" />
<GridSplitter Grid.Column="1" Width="8" VerticalAlignment="Stretch" HorizontalAlignment="Right" ResizeBehavior="PreviousAndNext" />
<Rectangle Grid.Column="2" Fill="Red" Margin="8" />
</Grid>
最佳答案
我提供两种选择:
- 不要对 GridSplitter 使用单列。相反,将其添加到可调整大小的列之间的列(在您的情况下为第二列)。您可以使用水平对齐方式将拆分器放置在列内的任何位置。
- 手动调整列大小。 如果启用预览,请使用 GridSplitter.DragCompleted 事件。更改其中所需的列宽。 如果禁用预览,请使用另一个带有预览前缀的事件。
它解决了我的问题。
关于wpf - GridSplitter:缩放与 GridSplitter 不直接相邻的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10009033/