代码等效于XAML代码段

时间:2010-12-16 10:48:27

标签: c# wpf xaml

我想知道TextBlock内部的代码等效代码:

<TextBlock>
     Hello
     <Run Background="Red">S</Run>
     <Run Background="Blue">O</Run>
</TextBlock>

原因是我有一个返回TextBox内容的转换器,但我不确定从转换器返回什么类型。我尝试了一些集合类型,它们包含字符串和2 Run个实例但不起作用。

此外,我注意到以下情况无效:

<TextBlock>
    <TextBlock.Text> <--- Added this
        Hello
        <Run Background="Red">S</Run>
        <Run Background="Blue">O</Run>
    </TextBlock.Text>
</TextBlock>

所以我的第二个问题是我必须将哪个属性绑定到转换器结果?

2 个答案:

答案 0 :(得分:6)

首先,您可以通过 InLines 属性添加Run块,例如

TextBlock txtBlock = new TextBlock();

txtBlock.Inlines.Add(new Run { Text = "S", Background = Brushes.Red });
txtBlock.Inlines.Add(new Run { Text = "O", Background = Brushes.Blue });

其次,你不能通过“TextBlock.Text”添加,因为这需要一个字符串,而不是一个运行集合。

答案 1 :(得分:1)

试试这个:

    <Label>
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="Hello"/>
            <TextBlock Background="Red" Text="S"/>
            <TextBlock Background="Blue" Text="O"/>
        </StackPanel>
    </Label>

将转换器添加到每个文本块的绑定中。我认为它比使用Run

更灵活