Казалось бы, 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
, но так как он не имеет толщины, сама граница невидима.