2010-07-26 44 views
1

我正在使用Silverlight 2動態地將一個TextBlock添加到Canvas。我設置了TextBlock的MaxWidth,但忽略了此值並顯示了比MaxWidth值更長的字符串。Silverlight 2 TextBlock忽略MaxWidth

TextBlock label=new TextBlock(); 
label.SetValue(Canvas.LeftProperty,Convert.ToDouble(x+3)); 
label.SetValue(Canvas.TopProperty, Convert.ToDouble(y + 1)); 
label.Width = DisplayWidth - 6; 
label.Height = DisplayHeight - 2; 
label.TextWrapping = TextWrapping.NoWrap; 
label.MaxWidth = DisplayWidth-6; 
label.MinWidth = DisplayWidth-6; 
label.Text = this.Title; 
label.Margin = new Thickness(3.0); 
baseCanvas.Children.Add(label); 

我需要做些什麼才能讓TextBlock將其寬度限制爲特定值?理想情況下,我還會添加條件省略號(即...)。

回答

2

TextBlockCanvas的直接孩子時,TextBlock上的MaxWidth似乎無效。我無法理解爲什麼會如此。然而,解決辦法是放置TextBlockBorder: -

TextBlock label=new TextBlock(); 
label.SetValue(Canvas.LeftProperty,Convert.ToDouble(x+3)); 
label.SetValue(Canvas.TopProperty, Convert.ToDouble(y + 1)); 
label.Width = DisplayWidth - 6; 
label.Height = DisplayHeight - 2; 
label.TextWrapping = TextWrapping.NoWrap; 
label.MaxWidth = DisplayWidth-6; 
label.MinWidth = DisplayWidth-6; 
label.Text = this.Title; 
label.Margin = new Thickness(3.0); 
Border border = new Border(); 
border.Child = label; 
baseCanvas.Children.Add(border); 

Border將信守TextBlockMaxWidth但因爲它沒有給出厚度的邊框本身是無形的。

+1

工程處理 - 非常感謝。 – DEH 2010-07-26 13:38:30