WPF- WrapPanel中的截止问题

时间:2013-12-03 13:20:44

标签: c# wpf xaml mvvm

当我在换行面板中使用多个控件时,如果任何控件包含冗长的文本(超过窗口大小),则会发生切断。 (见图)

cutoff happens for lengthy text block

我有两个文本块和一个按钮控件。

  <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>

第一个文本块发生了截止。如果文本包含更多字符,我想要换行到下一行。

帮我解决问题。提前谢谢。

2 个答案:

答案 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的“控件”和“文本”两面之间的区别。