我希望有一个简单的3列网格,可调整列,MinWidth为80。
代码如下所示:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="120" MinWidth="80"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*" MinWidth="80"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="120" MinWidth="80"/>
</Grid.ColumnDefinitions>
<GridSplitter Grid.Column="1" Width="5" HorizontalAlignment="Center" />
<GridSplitter Grid.Column="3" Width="5" HorizontalAlignment="Center" />
</Grid>
但它并不像我想要的那样有效。当分离器被推到左侧时,一切正常。当第二个分离器向右推时,一切正常。但是如果第一个分离器被推到右侧,它会将第3列和第二个分离器推出网格(或使其宽度= 0)。
我使用了单独的列作为网格分割器,就像它在msdn示例中所做的那样:
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="Auto" />
<ColumnDefinition/>
</Grid.ColumnDefinitions>
...
<GridSplitter Grid.Column="1"
HorizontalAlignment="Center"
VerticalAlignment="Stretch"
Background="Black"
ShowsPreview="True"
Width="5"
/>
我也将对齐设置为居中,因为我在某处读取了右对齐可能是个问题 并尝试了不同的ResizeBehaviors。
有谁知道,如何解决这个问题,以便始终可以看到3列宽度至少为80px?
感谢您的帮助
答案 0 :(得分:19)
请尝试将此行设置为将minwidth设置为80的三列。使用*而不是在使用gridsplitters时指定精确的宽度。
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Hidden">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MinWidth="80" />
<ColumnDefinition Width="5"/>
<ColumnDefinition Width="*" MinWidth="80"/>
<ColumnDefinition Width="5"/>
<ColumnDefinition Width="*" MinWidth="80"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding Path=ActualWidth, RelativeSource={RelativeSource Self}}" />
<GridSplitter Grid.Column="1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Background="Red" />
<TextBlock Grid.Column="2" Text="{Binding Path=ActualWidth, RelativeSource={RelativeSource Self}}" />
<GridSplitter Grid.Column="3" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Background="Red" />
<TextBlock Grid.Column="4" Text="{Binding Path=ActualWidth, RelativeSource={RelativeSource Self}}" />
</Grid>
</ScrollViewer>
答案 1 :(得分:0)
无法将其发布为评论;因此,将其放在“答案”列表中。
如果将带有Grid
的{{1}}放在带有GridSplitter
的主Grid
右侧的内容,则可以将最右边的窗格超出范围窗户的有想法吗?
GridSplitter