none
如何计算TextBlock高度 RRS feed

  • 问题

  • 1, TextBlock里回车转意符有用么? \r\n好像没啥用啊, 不会换行。。。

     <TextBlock x:Name="textBlockTeacher" Width="200" Text="今天任务:\r\n  认真学习"/>

     

    2,TextBlock限定宽度为200,自动换行, 我怎么计算出TextBlock的真正高度, 正确显示出文字?

    <TextBlock Width="200" TextWrapping="Wrap"

     Text="summer test 像偷偷溜走了一般,初秋的凉意阵阵袭来"/>

    2012年8月24日 5:55

答案

  • 哪有那么麻烦。用StackPanel布局,或者用Grid来布局,只是RowDefinition的heigth设为Auto。TextBlock的TextWrapping=“Wrap”。

    这样当你的TextBloc换行变高后,都会自动变高,不用你去设置。而且这样做的好处是TextBlock高度变化的时候不会打乱你的排版。如果你自己设置高度,而你的布局又是固定布局,很可能会遮盖住其他控件。

    StackPanel有自动排版功能,所以会根据你内容的大小撑开。RowDefinition的height设为Auto,也是根据你的内容大小撑开。所以你可以这样试试。应该是可以的。本人表示一直这么做都可以啊!


    2012年8月24日 6:24
  • Xaml似乎是不能识别\n,但是后台是可以的。

    TextBlock1.Text= "Line1" + "\n" + "Line2";

    这样是可以换行的。

    在Xaml中可以这样做。

    <TextBlock>
        <LineBreak></LineBreak>
    </TextBlock>
    一个<LineBreak></LineBreak>就是一行。


    2012年8月24日 7:14

全部回复

  • 哪有那么麻烦。用StackPanel布局,或者用Grid来布局,只是RowDefinition的heigth设为Auto。TextBlock的TextWrapping=“Wrap”。

    这样当你的TextBloc换行变高后,都会自动变高,不用你去设置。而且这样做的好处是TextBlock高度变化的时候不会打乱你的排版。如果你自己设置高度,而你的布局又是固定布局,很可能会遮盖住其他控件。

    StackPanel有自动排版功能,所以会根据你内容的大小撑开。RowDefinition的height设为Auto,也是根据你的内容大小撑开。所以你可以这样试试。应该是可以的。本人表示一直这么做都可以啊!


    2012年8月24日 6:24
  • 谢谢清风梧桐, 第二个问题解决了 第一个问题, Text="今天任务:\r\n 认真学习", 我想在“今天任务:”后面换行,该怎么做呢?
    2012年8月24日 7:07
  • Xaml似乎是不能识别\n,但是后台是可以的。

    TextBlock1.Text= "Line1" + "\n" + "Line2";

    这样是可以换行的。

    在Xaml中可以这样做。

    <TextBlock>
        <LineBreak></LineBreak>
    </TextBlock>
    一个<LineBreak></LineBreak>就是一行。


    2012年8月24日 7:14
  • 谢谢,第一种方法是可以的, 我采用第一种方法了
    2012年8月24日 9:15