我有以下布局(简化的):因为它需要的ScrollViewer和TextBlock的包装
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition MaxWidth="400" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<!-- Code for Column=0 -->
<ScrollViewer Grid.Column="1">
<Grid x:Name="layoutGrid">
<Grid.ColumnDefinitions>
<Grid.ColumnDefinition Width="Auto" />
<Grid.ColumnDefinition MinWidth="100" MaxWidth="400" />
<Grid.ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<!-- Code for Row=0 and Row=1 -->
<GroupBox Grid.ColumnSpan="3" Grid.Row=2>
<TextBlock Text="{Binding ...}" TextWrapping="Wrap" HorizontalAlignment="Left" VerticalAlignment="Top" />
</GroupBox>
</Grid>
</ScrollViewer>
</Grid>
- 第一列应占据空间作为糊状(有时也可以是100个像素,有时500)。
- 第二列应伸展到可用空间,但不超过400像素(变丑)。
- 第三列应该占用空间尽可能多(有时可以是200像素,有时可以是400)。
- 如果在某些极少数情况下,layoutGrid需要的空间超过屏幕上可用的空间,则应该可以看到水平滚动条。
- GroupBox应该始终具有全部三列的总宽度(它应该扩展到其宽度总数)。在那个空间中,文本框应该包裹起来。 GroupBox不应伸展到屏幕上可用的整个空间。
我该如何在xaml中实现这个功能?看起来只要插入ScrollViewer,TextBlock就不会再包装了。
嗨薇薇,谢谢你的提示。 IT无法在GroupBox或LayoutGrid上完成,因为它们是TextBlock的父元素,并且它们将设置其宽度与它们的小孩请求一样多(在我们的例子中,其中一个小孩是TextBlock)。但是,如果我们在layoutGrid外部移除GroupBox并将其放置在正下方,那么建议可以安全应用,然后它们的大小不会直接影响彼此,因此您的提示可以应用。 – Goran
+1精彩小贴士@Viv。 – Sheridan
几乎可以工作,但缩小尺寸并不会缩小'ActualWidth'。因此,只有升级是可能的。有没有解决方案? – bytecode77