2010-07-26 2 views
1

Я использую Silverlight 2 для динамического добавления TextBlock к холсту. Я устанавливаю MaxWidth в TextBlock, но игнорирует это значение и отображает строку длиннее значения 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

Казалось бы, что MaxWidth на TextBlock неэффективна, когда TextBlock является прямым потомком в Canvas. Я не могу понять, почему это так. Однако решение было бы поместить TextBlock в Border: -

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); 

The Border почтит MaxWidth в TextBlock, но так как она не дается толщиной не граница сама по себе является невидимым.

+1

Работает с удовольствием - спасибо большое. – DEH