【问题标题】:Finding the Line Count of a Textblock in windows phone 7 & 8在 windows phone 7 和 8 中查找文本块的行数
【发布时间】:2013-09-03 06:58:35
【问题描述】:

我在 windows phone 中使用 TextBlock。

我正在绑定一个可以是任意长度的字符串。如果字符串长度超过两行,我只想显示两行,并且我想在第二行的末尾显示“...”。

在这里我不能使用 Length,因为例如:'W' 会占用更多空间,但像 'I' 这样更细的字符甚至可能无法到达第二行。所以我不能在这里使用长度。

我见过 TextTrimming="WordEllipsis",但它在一个单词后显示省略号。如果第二行的最后一个单词太大,那么最后一个单词将被删除。

所以请告诉我如何找到文本块的行数。

【问题讨论】:

    标签: c# windows-phone-7 windows-phone-8


    【解决方案1】:

    【讨论】:

    • 这不是 Windows 8(Windows 应用商店)问题。
    • 哎哟。对。所以等待是没有意义的。但是,覆盖内容控件的 MeasureOverride 应该可以工作。
    【解决方案2】:

    另一种不设置省略号的方法是在值转换器内的另一个上下文中增量呈现文本(或文本块的副本),找到适合您可用区域的正确宽度/高度等,然后返回该文本 (或者喜欢少 2-3 个字符,并自己多加一个省略号)。

    我绝对推荐这种方法,这绝对不是这样做的最佳方法,但如果没有其他答案适合,这应该适用于简单的情况。

    【讨论】:

      【解决方案3】:

      不幸的是,在 windows phone 中 textwrappin 和 texttriming 都不能同时工作,所以这里我使用 textblock 加载事件,而在 c# 3 中,文本块被用来满足你的要求。

      在您的 xaml 中,

       <TextBlock Grid.Row="1" Text=""  Margin="20,0,0,0" VerticalAlignment="Top"  MaxHeight="60" Foreground="#F97E7F81"  FontFamily="Segoe WP"  FontSize="18" Width="430" FontWeight="Bold" Loaded="desc" />
      

      在 C# 中,

      private void desc(object sender, RoutedEventArgs e) {

              TextBlock tb = (TextBlock)sender;
              TextBlock tb1=new TextBlock();
              tb1.Text = tb.Text;
              tb1.TextWrapping = TextWrapping.Wrap;
              tb1.Width = 435;
              tb1.Height = 75;
              TextBlock tb2 = new TextBlock();
              tb2.Text = tb1.Text;
              tb2.Height = 75;
              tb2.TextWrapping = TextWrapping.Wrap;
              tb2.Width = 435;
              tb.Text = tb2.Text;
              tb.TextTrimming = TextTrimming.WordEllipsis;
              tb.TextWrapping = TextWrapping.Wrap;
          }
      

      祝你有美好的一天。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-23
        相关资源
        最近更新 更多