我有一个包含很多对象的WPF页面.在所有这些项目的底部,我有一个标签,需要在内容中进行文本换行.答案很简单,使用Textblock这应该很简单.然而,即使我使用这些项目,我仍然无法得到文本包装.所以我假设在我需要检查/修改的其他对象中必须有其他设置.在伪代码中,我的XAML看起来像
<Page>
<Stackpanel vertical>
<Border>
<Stackpanel vertical>
<label></label>
<Stackpanel horizontal>
<label></label>
</stackpanel>
<label>
<textblock TextWrapping="Wrap">
</label>
</border>
</stackpanel>
</page>
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?我应该检查其他元素吗?我已经确定没有任何嵌套元素指定任何高度 - 它们都设置为auto.
我将继续发布这个作为答案,以防其他人陷入困境.
当您设置控件的Width和Height属性时TextBlock,它将首先水平增加大小以容纳包装文本之前的尽可能多的文本(如果TextWrapping属性设置为Wrap).一旦它决定需要包装文本,如果Height设置为Auto,文本框将垂直调整大小以容纳文本(直到它到达你放入的任何UI容器的底部).如果您不希望文本框调整超过某个点,则需要为MaxWidth和MaxHeight属性设置值.这将迫使TextBlock包裹在一定宽度.