Добавление строки в текстовый блок программно

Я знаю, как добавить элемент управления к холсту/сетке/макету - просто позвонив canvas.Childern.Add(). Однако, когда я хочу внедрить что-то внутри текстового блока, я не могу найти способ для него. Текстовый блок не содержит метод Add или что-то еще, поэтому я немного потерял.

XAML Я пытаюсь превратиться в С#:

<textblock x:name="textBlock">
 <line x1="0" y1="0" x2="100" y2="0" stroke="Black" strokethickness="4" x:name="line1">
 <textblock text="Hello there!" verticalalignment="Center" horizontalalignment="Center" x:name="innerTextBlock">
 </textblock>
</line></textblock>

EDIT: Я думаю, что лучший способ сделать это (помимо ответа) - просто создать пользовательский элемент управления WPF и ссылку на него.

2 ответа

Вы должны использовать свойство inlines (как указано выше), поэтому для воспроизведения вашего xaml достаточно сделать следующее (где LayoutRoot - это имя вашего родительского элемента управления):

var t = new TextBlock();
 t.Inlines.Add(new Line { X1 = 0, Y1 = 0, X2 = 100, Y2 = 0, Stroke = new SolidColorBrush(Colors.Black), StrokeThickness = 4.0 });
 t.Inlines.Add("Hello there!");
 t.Inlines.Add(new Line { X1 = 0, Y1 = 0, X2 = 100, Y2 = 0, Stroke = new SolidColorBrush(Colors.Black),StrokeThickness = 4.0});
 LayoutRoot.Children.Add(t);


Я верю, что если у вас несколько строк, вы должны использовать свойство Inlines, которое представляет собой коллекцию, содержащую список встроенных элементов. Вы не можете напрямую добавлять к нему текст, вы должны добавить его к объекту Inline, например Run.

licensed under cc by-sa 3.0 with attribution.