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