Silverlight 2 TextBlock игнорирует MaxWidth

Я использую Silverlight 2 для динамичного добавления TextBlock к Холсту. Я установил MaxWidth 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 ограничивать свою ширину определенным значением? Идеально я добавлю условные замещающие знаки также (т.е....).

1
задан DEH 26 July 2010 в 08:46
поделиться

1 ответ

Кажется, что 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); 

Граница Border будет соответствовать MaxWidth TextBlock , но поскольку ему не задана толщина, сама граница невидима.

2
ответ дан 2 September 2019 в 22:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: