none
关于获取Textblock文本实际长度的问题 RRS feed

  • 问题

  • 比如有这样一个问题:

    1.将一个长度为3000的文本赋值给Textblock

    2.Textblock的MaxLines设置为10

    3.假设在MaxLines=10的条件下,无法完全显示3000长度的字符串

    4.那么如何获取被显示出来了的字符串的长度呢?

    2015年1月7日 12:44

答案

全部回复

  • 你好,

    对于TextBlock, 首先没有属性可以检测是否超出限定,你的需求很难被实现。

    如果是RichTextBlock的话,它有HasOverflowContent属性,可以检测内容是否超出限制,不过现在的问题是不好判断每行的长度,假设每行16个数字,那如果超出了,就是16*MaxLines就可以了:

    <RichTextBlock Grid.Row="0" Name="richTextBlock1" MaxLines="3" Width="100" TextWrapping="Wrap" >
    </RichTextBlock>
    <Button Grid.Row="1" Content="Click" Click="Button_Click" />

    public MainPage()
    {
                this.InitializeComponent();
    
                this.NavigationCacheMode = NavigationCacheMode.Required;
    
                richTextBlock1.Blocks.Clear();
                var paragraph = new Paragraph();
                paragraph.Inlines.Add(new Run { Text = "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" });
                richTextBlock1.Blocks.Add(paragraph);
    }
    
    private void Button_Click(object sender, RoutedEventArgs e)
    {
    
                if(richTextBlock1.HasOverflowContent==true)
                {
                    Debug.WriteLine(16 * richTextBlock1.MaxLines);
                }
                else
                {
                    richTextBlock1.SelectAll();
                    Debug.WriteLine(richTextBlock1.SelectedText.Length);
                }
    }



    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年1月8日 10:15
    版主
  • 谢谢你的回答。

    不过简单的使用每行的字数*行数结果可能不准确,毕竟每一行不一定都被填满了。

    对于Textblock和RichTextBlock都不能实现这样的功能,我感到有点遗憾(实际上是恼火)

    不过,只有想其他办法了。

    2015年1月11日 4:04
  • 谢谢你的回答。

    应该不是简单的使用每行的字数*行数,毕竟每一行不一定都被填满了。

    对于Textblock和RichTextBlock都不能实现这样的功能,我感到有点遗憾(实际上是恼火)

    不过,只有想其他办法了。


    2015年1月11日 4:04
  • 谢谢你的回答。

    不过简单的使用每行的字数*行数结果可能不准确,毕竟每一行不一定都被填满了。

    对于Textblock和RichTextBlock都不能实现这样的功能,我感到有点遗憾(实际上是恼火)

    不过,只有想其他办法了。

    你好,

    目前确实有很多API没有公开,也有一些已知问题,如果有任何建议,可以去以下网站提交建议,报告问题,产品组会去收集:

    https://wpdev.uservoice.com/forums/136284-dev-platform-%E4%B8%AD%E5%9B%BD


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年1月11日 13:55
    版主
  • ?????
    2015年1月20日 3:25