wpf - TextBlock TextWrapping 不换行

标签 wpf xaml

当我将 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/

相关文章:

c# - 如何基于 DataTemplate 的 DataContext 对象创建 ViewModel?

c# - ListBox Item 将冲突的属性返回给子项

c# - 带列表框的 ContentPresenter

c# - 菜单和滚动条

c# - Silverlight 弹出窗口实际大小

xaml - ListView MVVM内TextBox上的UWP InvokeCommandAction

c# - CollectionViewSource 不会对属性更改进行重新排序

c# - 什么时候调用 CanExecute?

wpf - 向应用程序用户提供受限权限的方法

c# - 具有 AutoGenerateColumns 的 WPF Datagrid 中的 ItemTemplateSelector