以编程方式向文本块添加一行

时间:2010-08-22 18:19:49

标签: c# wpf

我知道如何通过调用canvas.Childern.Add()将控件添加到canvas / grid / layout。但是,当我想在文本块中嵌入某些东西时,我似乎无法找到它的方法。一个文本块不包含Add方法或任何东西,所以我有点迷失。

我试图变成C#的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" />
    <Line X1="0" Y1="0" X2="100" Y2="0" Stroke="Black" StrokeThickness="4" x:Name="line2"/>
</TextBlock>

编辑:我认为最好的方法(除了答案)是简单地创建一个WPF用户控件并引用它。

2 个答案:

答案 0 :(得分:12)

你必须使用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);

答案 1 :(得分:4)

我相信如果你有多行,你必须使用Inlines属性,该属性是一个包含内联元素列表的集合。您不能直接向其添加文本,必须将其添加到Inline对象 - 例如Run。