Добавление строки в текстовый блок программным способом - PullRequest
4 голосов
/ 22 августа 2010

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

XAML, который я пытаюсь превратить в C #:

<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" />
    <Line X1="0" Y1="0" X2="100" Y2="0" Stroke="Black" StrokeThickness="4" x:Name="line2"/>
</TextBlock>

РЕДАКТИРОВАТЬ: Я думаю, что лучший способ сделать это (помимо ответа), это просто создать пользовательский элемент управления WPF и ссылаться на него.

Ответы [ 2 ]

12 голосов
/ 22 августа 2010

Вы должны использовать свойство 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);
4 голосов
/ 22 августа 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...