我有一个包含可变文本的文本块和一个包含可变数量按钮的堆栈面板的窗口。
当堆栈面板增加宽度时,如何让窗口的宽度(水平)增长,但让文本始终适应可用宽度(当文本变长时不增加窗口的宽度)?
我尝试了一些带有Width="Auto" / VerticalAlign="Stretch" / TextWrapping等的组合,但只有当文本长度/堆栈面板子项之一增加宽度时,才会使窗口增长。
我希望基于堆栈面板的宽度来换行文本。最好只使用XAML。
编辑:
按要求提供了一些简化的标记以重现问题:
我尝试了一些带有Width="Auto" / VerticalAlign="Stretch" / TextWrapping等的组合,但只有当文本长度/堆栈面板子项之一增加宽度时,才会使窗口增长。
我希望基于堆栈面板的宽度来换行文本。最好只使用XAML。
编辑:
按要求提供了一些简化的标记以重现问题:
<Window
Width="500"
Height="225"
MinWidth="500"
MinHeight="225"
HorizontalAlignment="Stretch"
SizeToContent="WidthAndHeight"
ResizeMode="NoResize">
<Grid HorizontalAlignment="Stretch" Width="Auto">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="35"/>
</Grid.RowDefinitions>
<!-- Text should adapt to the available width but not grow the window. Instead it should scroll vertically -->
<ScrollViewer Grid.Row="0" Margin="15" VerticalScrollBarVisibility="Auto">
<TextBlock TextWrapping="Wrap" Height="Auto">...Some Binding...</TextBlock>
</ScrollViewer>
<!-- Should be as wide as it needs to be, growing the window in width if neccessary -->
<StackPanel x:Name="ButtonStackPanel" Grid.Row="1" FlowDirection="RightToLeft" Orientation="Horizontal" Width="Auto">
...Some Buttons...
</StackPanel>
</Grid>
</Window>
编辑2 如果Stackpanel中只有一个按钮,则窗口应该具有最小宽度为500,但仍应完全拉伸(500px)。
编辑3 - 更多图片
正确 - 文本很短,只有一个按钮 -> 最小宽度为500 错误 - 文本很长,应在最小宽度为500时换行,因为只允许Stackpanel增加窗口的宽度 正确 - 短文本但Stackpanel增加了窗口大小
MaximumWidth
绑定到另一个控件的ActualWidth
。 - Sinatr