WPF - 网格中组框的动态宽度
Posted
技术标签:
【中文标题】WPF - 网格中组框的动态宽度【英文标题】:WPF - dynamic width of group box in grids 【发布时间】:2021-08-19 23:06:24 【问题描述】:我在 xaml 页面上有一行,其中包含三个组框。
代码如下:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<GroupBox Grid.Column="0" Grid.Row="0">
<ScrollViewer>
<TextBlock TextWrapping="WrapWithOverflow" Text="one"/>
</ScrollViewer>
</GroupBox>
<GroupBox Grid.Column="1" Grid.Row="0">
<ScrollViewer>
<TextBlock TextWrapping="WrapWithOverflow" Text="two"/>
</ScrollViewer>
</GroupBox>
<GroupBox Grid.Column="2" Grid.Row="0">
<ScrollViewer>
<TextBlock TextWrapping="WrapWithOverflow" Text="three"/>
</ScrollViewer>
</GroupBox>
</Grid>
三个组框有长文本,可以换行并有一个滚动条。问题是并非所有这些组框都会同时显示。有时只有一个、两个或全部。
当将列设置为自动时,第一个会接管,当我使用停靠面板或堆栈面板时也会发生同样的情况。
我的问题是,如果第二个或第三个组合框具有折叠的可见性,我如何才能改变宽度以占据页面的整个宽度。 谢谢!
【问题讨论】:
看看***.com/questions/19227091/… 【参考方案1】:您可以将 UniformGrid 与单行一起使用。它会根据孩子的数量调整列宽
<UniformGrid Rows="1">
<GroupBox>
<ScrollViewer>
<TextBlock TextWrapping="WrapWithOverflow" Text="one"/>
</ScrollViewer>
</GroupBox>
<GroupBox>
<ScrollViewer>
<TextBlock TextWrapping="WrapWithOverflow" Text="two"/>
</ScrollViewer>
</GroupBox>
<GroupBox>
<ScrollViewer>
<TextBlock TextWrapping="WrapWithOverflow" Text="three"/>
</ScrollViewer>
</GroupBox>
</UniformGrid>
【讨论】:
以上是关于WPF - 网格中组框的动态宽度的主要内容,如果未能解决你的问题,请参考以下文章