Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Adding a line to a textblock programmatically

Tags:

c#

wpf

I know how to add a control to the canvas/grid/layout- simply by calling canvas.Childern.Add(). However, when I want to embed something inside a textblock, I can't seem to find the method for it. A textblock doesn't contain a Add method or anything, so I'm at a bit of a lost.

The XAML I'm trying to turn into C# is:

<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>

EDIT: I think the best way to do it (besides the answer) is to simply create a WPF User control and reference that.

like image 338
Dominic K Avatar asked Dec 06 '22 01:12

Dominic K


1 Answers

You have to use inlines property (as stated before) so to reproduce your xaml it is enough to do the following (where LayoutRoot is the name of your parent control):

        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);
like image 65
tchrikch Avatar answered Dec 11 '22 09:12

tchrikch