当我在换行面板中使用多个控件时,如果任何控件包含冗长的文本(超过窗口大小),则会发生切断。 (见图)
我有两个文本块和一个按钮控件。
<Grid>
<WrapPanel>
<TextBlock Text="Very long Text Message contains long text for testing " FontWeight="Bold"></TextBlock>
<Button Content="sample Text"></Button>
<TextBlock Text="sample Text textblock"></TextBlock>
</WrapPanel>
</Grid>
第一个文本块发生了截止。如果文本包含更多字符,我想要换行到下一行。
帮我解决问题。提前谢谢。
答案 0 :(得分:5)
您需要在文本框中使用属性TextWrapping="Wrap"
<TextBlock
Text="Very long Text Message contains long text for testing "
FontWeight="Bold"
TextWrapping="Wrap">
</TextBlock>
答案 1 :(得分:2)
你是否试图制作一个包装的段落?如果是这样,那么WrapPanel
实际上并不是你想要的。
WrapPanel
获取UI元素(不动产的矩形块)并从左到右,从上到下排列。您可以在第一个TextBlock
中启用换行,但它会占用一个高两行的屏幕空间矩形。由于TextBlock
填充了整个矩形,因此该按钮实际上会在下显示,而不是在“用于测试”的粗体字的右侧。
如果你想让整个事件像段落一样流动,你不想使用 UI 元素(总是矩形块);你想使用 text 元素(在段落中流动)。
将文本元素放入XAML的方法是将它们包装在TextBlock
中。试试这个:
<Grid>
<TextBlock TextWrapping="Wrap">
<Bold>
<Run Text="Very long Text Message contains long text for testing " />
</Bold>
<Button Content="sample Text"></Button>
sample Text textblock
</TextBlock>
</Grid>
请注意,我将第一个文本块包装在<Run>
元素中 - 否则将忽略尾随空格(假设您的XAML文档中为空格)。第二块文本没有前导或尾随空格,所以我只是将它直接放入内联。
This answer更多地了解了XAML的“控件”和“文本”两面之间的区别。