0

我在 Windows 手机中使用 TextBlock。

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

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

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

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

4

3 回答 3

0

不幸的是,在 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# 中,

私人无效描述(对象发送者,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;
    }

祝你今天过得愉快。

于 2013-09-04T11:49:51.127 回答
0

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

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

于 2013-09-04T11:57:10.177 回答
0

您需要的是 TextTrimming="CharacterEllipsis"。

要么自己做:http: //igrali.com/2013/03/31/character-ellipsis-trimming-in-windows-store-apps/

或等待几周:http: //msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.texttrimming.aspx

于 2013-09-03T07:29:41.150 回答