我想知道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>
所以我的第二个问题是我必须将哪个属性绑定到转换器结果?
答案 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
更灵活