如何让WPF TextBlock在多行显示我的文本?

Bri*_*ard 41 wpf xaml

我有一个wpf窗口,其中我有一个带有两个视口的stackpanel - 每个视口中都有一个文本块.

<Grid>
    <StackPanel VerticalAlignment="Center" Orientation="Vertical" >
        <Viewbox Margin="100,0,100,0">
            <TextBlock x:Name="headerText" Text="Lorem ipsum dolor" Foreground="Black"/>
        </Viewbox>
        <Viewbox Margin="150,0,150,0">
            <TextBlock x:Name="subHeaderText" Text="Lorem ipsum dolor, Lorem ipsum dolor, lorem isum dolor, Lorem ipsum dolor, Lorem ipsum dolor, lorem isum dolor, " TextWrapping="Wrap" Foreground="Gray" />
        </Viewbox>
    </StackPanel>
</Grid>
Run Code Online (Sandbox Code Playgroud)

我想要实现的是顶部文本块是带有更大文本的标题.第二个文本块是具有较小文本的子标题.无论标题或子标题有多少文本,字体都应该动态变小/变大.我的问题是我希望副标题是固定宽度.这意味着,字体应该是标题的百分比(70%)并换行到多行,具体取决于我有多少文本.我附上了我到目前为止的代码......我错过了那个副标题,无法弄清楚是什么.干杯

编辑 基本上我想要实现的是子标题包装文本所以它可以向下扩展它,字体是标题的70% - 无论字体有多大.

Bri*_*ard 73

嵌套stackpanel将导致文本框正确包装:

<Viewbox Margin="120,0,120,0">
    <StackPanel Orientation="Vertical" Width="400">
        <TextBlock x:Name="subHeaderText" 
                   FontSize="20" 
                   TextWrapping="Wrap" 
                   Foreground="Black"
                   Text="Lorem ipsum dolor, lorem isum dolor,Lorem ipsum dolor sit amet, lorem ipsum dolor sit amet " />
    </StackPanel>
</Viewbox>
Run Code Online (Sandbox Code Playgroud)

  • 这会解决您的问题吗?固定宽度和固定前端尺寸似乎与问题陈述不一致. (6认同)

Ton*_*tio 35

使用该属性TextWrapping的的TextBlock元素:

<TextBlock Text="StackOverflow Forum"
           Width="100"
           TextWrapping="WrapWithOverflow"/>
Run Code Online (Sandbox Code Playgroud)


RDV*_*RDV 13

使用Linebreak:

<TextBlock>
        <Run Text="Line1"/>
        <LineBreak/>
        <Run Text="Line2" FontStyle="Italic" FontSize="9"/>
        <LineBreak/>
        <Run Text="Line3"/>
    </TextBlock>
Run Code Online (Sandbox Code Playgroud)

请参阅:https://social.msdn.microsoft.com/Forums/vstudio/en-US/51a3ffe4-ec82-404a-9a99-6672f2a6842b/how-to-give-multiline-in-textblock?forum=wpf

谢谢,

RDV