gpt4 book ai didi

wpf - TextBlock TextWrapping 不换行

转载 作者:行者123 更新时间:2023-12-03 07:37:13 26 4
gpt4 key购买 nike

当我将 TextBlock 放置在水平对齐的 StackPanel 内时,它不会换行。我意识到这是因为 StackPanel 的可用宽度是 PositiveInfinity,但是有什么解决方法吗?

我的布局比这个示例复杂得多,因此我无法删除 StackPanel 或水平方向。我只是试图重现展示该行为的最简单的示例。

    <StackPanel Orientation="Horizontal">
<Rectangle Width="50" Height="50" Fill="Blue" VerticalAlignment="Top" />
<Rectangle Width="50" Height="50" Fill="Red" VerticalAlignment="Top" />
<TextBlock TextWrapping="Wrap"
Text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus leo lectus, viverra ut lobortis vel, mollis eget lectus. Suspendisse laoreet consequat ultrices. Curabitur ultricies, tortor feugiat porttitor faucibus, lorem eros pretium nisl, eu ullamcorper mauris tortor sit amet augue." />
</StackPanel>

更新: TextBlock 的宽度必须是动态的。我需要它在调整大小时与窗口一起流动。

更新 2:向 StackPanel 添加了另一个元素,因为我需要水平布置子元素。

更新 3(解决方案):用 DockPanel 替换 StackPanel。

<DockPanel>
<DockPanel DockPanel.Dock="Top">
<Rectangle Width="50" Height="50" Fill="Blue" VerticalAlignment="Top" DockPanel.Dock="Left" />
<Rectangle Width="50" Height="50" Fill="Red" VerticalAlignment="Top" DockPanel.Dock="Left" />
<TextBlock TextWrapping="Wrap"
Text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus leo lectus, viverra ut lobortis vel, mollis eget lectus. Suspendisse laoreet consequat ultrices. Curabitur ultricies, tortor feugiat porttitor faucibus, lorem eros pretium nisl, eu ullamcorper mauris tortor sit amet augue." />
</DockPanel>
</DockPanel>

最佳答案

这是因为您在 StackPanel 上使用水平方向。这意味着 StackPanel 为每个子控件提供完整的宽度,然后将它们水平放置 - 即使这意味着超出其有界/可见宽度。因为没有任何东西可以约束 TextBlock 的宽度,所以它不会换行。

如果您切换到垂直方向,则包装会起作用,但我猜您有理由指定其他方向。您能展示您想要实现的布局吗?

关于wpf - TextBlock TextWrapping 不换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6625177/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com