Finding the Line Count of a Textblock in windows phone 7 &am
本文关键字:phone windows am in Textblock Line the Count of Finding | 更新日期: 2023-09-27 18:29:55
我正在windows phone中使用TextBlock。
我正在绑一根可以是任何长度的绳子。如果字符串长度超过两行,我只想显示两行,并且我想在第二行的末尾显示"…"。
这里我不能使用Length,因为例如:"W"会占用更多的空间,但像"i"这样的较细字符甚至可能无法到达第二行。所以我不能在这里使用长度。
我见过TextTrimming="WordEllipsis",但它显示了单词后面的省略号。若第二行的最后一个字太大,那个么最后一个单词将被删除。
所以请告诉我如何找到文本块的行数
您需要的是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
另一种不设置省略号的方法是在值转换器内的另一个上下文中增量呈现文本(或文本块的副本),找到适合您可用区域的正确宽度/高度等,然后返回该文本(或者少2-3个字符,并自己返回一个额外的省略号)。
我绝对不推荐这种方法,这绝对不是一种最佳的方法,但如果没有其他合适的答案,这应该适用于简单的情况。
不幸的是,在windows phone中,textwrappen&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(对象发送方,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;
}
祝你今天愉快。