我在Windows手机中使用TextBlock。
我正在绑定一个可以是任意长度的字符串。我想只显示两行,如果字符串长度超过两行,我想在第二行的末尾显示“...”。
这里我不能使用长度,因为ex:'W'将占用更多空间,但像'I'这样的较薄字符甚至可能无法到达第二行。所以我不能在这里使用长度。
我看过TextTrimming =“WordEllipsis”,但它显示了一个单词后面的省略号。如果第二行的最后一个单词太大,则删除最后一个单词。
所以请告诉我如何找到文本块的行数。
答案 0 :(得分: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
答案 1 :(得分:0)
不幸的是,在Windows手机中,textwrappin和texttriming一次都不起作用,所以我在这里使用的是文本块加载事件,而在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;
}
度过愉快的一天。
答案 2 :(得分:0)
另一种没有设置省略号的方法是在值转换器内的另一个上下文中递增渲染文本(或文本块的副本),找到适合您可用区域的正确宽度/高度等,并返回该文本(或者更少2-3个字符和自己额外的省略号。
我肯定不推荐这种方法,这绝对不是一种最佳方式,但如果没有其他答案适合,这应该适用于简单的情况。