zoukankan      html  css  js  c++  java
  • 【WP7】TextBlock长文本显示

    WP7中的使用轻量级的TextBlock控件来显示文本,但是TextBlock显示过长的文本时,会发生截断,过长的部分不显示

    如果过长的字符串,可以分解为多个TextBlock来显示,在MSDN上也有相关的实现,但是这个效率很低,而且也不是适合所有的情况,有时还是会出现文本截断问题

      http://blogs.msdn.com/b/priozersk/archive/2010/09/08/creating-scrollable-textblock-for-wp7.aspx

    我用下面算法来分解字符串,然后生成多个TextBlock放在StackPanel,最后在放在ScrollViewer中

      思路:

        先设置一个最大长度MAX,然后用 tbList来存放分解出来的字符串

        然后以此读取字符串中的每一行,

          当所读取字符串长度小于MAX时,继续读取,直到所读取的字符串长度大于MAX

          当所读取字符串长度大于MAX时,保存之前读取的字符串到 tbList,然后重新继续

        当单行的长度大于MAX时,则按每MAX个字符一个字符串来分解(比如:当MAX=300, 当读取到一行的长度为420,则该行分解为300和120两个长度的字符串,不足)

    表达不是很清楚,直接上代码吧 

            public List<string> ParstText(string text)
            {
                const int MAX = 300;
                var reader = new StringReader(text);
                var tblist = new List<string>();
    
                string line;
                var builder = new StringBuilder();
                while ((line = reader.ReadLine()) != null)
                {
                    //如果总长度不超过MAX,则加入
                    if (line.Length + builder.Length < MAX)
                    {
                        builder.AppendLine(line);
                    }
                    else
                    {
                        //先加入
                        tblist.Add(builder.ToString().Trim());
    
                        builder = new StringBuilder();
                        //单行长度小于MAX,则Append
                        if (line.Length < MAX)
                        {
                            builder.AppendLine(line);
                        }
                        //单行长度大于MAX,则
                        else
                        {
                            int times = line.Length / MAX;
                            for (int j = 0; j < times; j++)
                            {
                                tblist.Add(line.Substring(j * MAX, MAX).Trim());
                            }
                            builder.AppendLine(line.Substring(times * MAX));
                        }
                    }
                }
                if (builder.Length > 0)
                    tblist.Add(builder.ToString().Trim());
    
                return tblist;
            }
  • 相关阅读:
    MySQL3:索引
    MySQL4:存储过程和函数
    MySQL2:四种MySQL存储引擎
    MySQL1:MySQL函数汇总
    web.xml详解
    SharePoint 多行文本字段设置默认值
    SharePoint Online 自定义Modern UI表单
    Server-side activities have been updated. You need to restart SharePoint Designer to use the updated version of activities.
    计算请假天数JavaScript方法
    SharePoint 2019 离线安装准备工具
  • 原文地址:https://www.cnblogs.com/bomo/p/3035333.html
Copyright © 2011-2022 走看看