TextBlock显示问题

问题描述:

  条件一:TextBlock的Text内容超过本身显示的范围时,以"..."的形式显示部分内容

  条件二:单击"..."后弹出一个Div,来将TextBlock对应内容全部展现。

  条件三:使用触屏

问题分析与解决:

  1. 对于条件一,设置TextBlock的TextTrimming属性即可

  2. 对于条件二,计算一下TextBlock的总宽度和展现内容所需长度,进行对比,能够完全展示,则不显示"..."的按钮,否则显示

    具体计算方法如下:

    //获取Textblock真正长度 

    var subjectivemaxWidth = Application.Current.MainWindow.ActualWidth / 2;
            this.subjectiveImageButton.Visibility = subjectivemaxWidth < this.GetTextBlockIdealWidth(this.subjectiveTextBlock) ? Visibility.Visible : Visibility.Collapsed;

    

    //获取完全展示内容所需长度,其实就是ActualWidth,但有时候该值为空,因此手动计算一下更安全

     private double GetTextBlockIdealWidth(TextBlock textBlock)      

      {            

         var text = textBlock.Text;            

         var alphabetCount = this.GetAlphabetCount(text);         

         var characterCount = text.Length - alphabetCount;

         var idealWidth = textBlock.FontSize * (alphabetCount / 2.0 + characterCount);           

           return idealWidth;

        }

          private int GetAlphabetCount(string str)    

       {            

       var count = 0;            

       foreach (var s in str)           

       {

                      if ((s > 'a' && s < 'z') || (s > 'A' && s < 'Z'))  

                     {                    

               count++;

               }

            }

                return count;        

      }

  3. 对于条件三,如果条件二的做法才有意义,否则使用ToolTip完全搞定了。

mark一下,如果哪位高手有更好的方法,欢迎共享。

转载于:https://www.cnblogs.com/challenger007/p/3460808.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值