1
我在Windows Phone 8應用程序中使用了很多元素的長列表選擇器。每個項目都有一個文本塊,每個文本的文本可以從幾個字母到很多單詞。我想保留文本到一行,所以我將TextWrapping屬性設置爲「NoWrap」。我想添加「...」並裁剪文字,如果它太長而無法放在屏幕上。 我到目前爲止都試圖使用每個TextBlock的加載事件並減少文本,直到它適合屏幕。但是,當列表中有許多元素時,加載事件不會爲所有文本塊激活。有沒有合適的方法來解決這個問題?字符串太長時,中斷來自文本塊的文本塊「...」
private void TextBlock_Loaded_1(object sender, RoutedEventArgs e)
{
TextBlock txt = sender as TextBlock;
if (txt == null)
return;
if (txt.ActualWidth > 300)
{
while (txt.Text.Length > 4 && txt.ActualWidth > 290)
txt.Text = txt.Text.Substring(0, txt.Text.Length - 4);
txt.Text = txt.Text.Substring(0, txt.Text.Length - 3);
txt.Text = txt.Text.Trim(new Char[] { ' ', ',' }) + "...";
}
}
[TextTrimming](http://msdn.microsoft.com/en-us/library/system.windows.controls.textblock.texttrimming%28v=vs.110%29.aspx) –
您應該使用Converter to如果文本太長,請轉換文本。 –