如何在WPF应用程序中实现TextBlock
控件中文本的格式设置?
例如:我希望某些单词是粗体的,其他的是斜体的,还有一些是不同颜色的,比如这个例子:
我的问题背后的原因是这个实际的问题:
lblcolorfrom.Content = "Colour From: " + colourChange.ElementAt(3).Value.ToUpper();
我希望字符串的第二部分是粗体的,并且我知道我可以使用两个控件(Label、TextBlocks等)。但我不希望这样,因为已经有大量的控件在使用。
发布于 2011-03-11 01:01:45
您需要使用Inlines
<TextBlock.Inlines>
<Run FontWeight="Bold" FontSize="14" Text="This is WPF TextBlock Example. " />
<Run FontStyle="Italic" Foreground="Red" Text="This is red text. " />
</TextBlock.Inlines>
使用绑定:
<TextBlock.Inlines>
<Run FontWeight="Bold" FontSize="14" Text="{Binding BoldText}" />
<Run FontStyle="Italic" Foreground="Red" Text="{Binding ItalicText}" />
</TextBlock.Inlines>
您还可以绑定其他属性:
<TextBlock.Inlines>
<Run FontWeight="{Binding Weight}"
FontSize="{Binding Size}"
Text="{Binding LineOne}" />
<Run FontStyle="{Binding Style}"
Foreground="Binding Colour}"
Text="{Binding LineTwo}" />
</TextBlock.Inlines>
如果你有一个boolean (比方说),你可以通过转换器绑定。
发布于 2011-10-14 10:48:45
在XAML中可以很容易地做到这一点:
<TextBlock>
Hello <Bold>my</Bold> faithful <Underline>computer</Underline>.<Italic>You rock!</Italic>
</TextBlock>
发布于 2014-06-27 20:52:34
有各种Inline
元素可以帮助您,对于最简单的格式选项,您可以使用Bold
、Italic
和Underline
<TextBlock>
Sample text with <Bold>bold</Bold>, <Italic>italic</Italic> and <Underline>underlined</Underline> words.
</TextBlock>
我认为值得注意的是,这些元素实际上只是设置了各种属性的Span
元素的缩写(即:对于Bold
,FontWeight
属性被设置为FontWeights.Bold
)。
这就引出了下一个选择:前面提到的Span
元素。
您可以使用此元素实现与上面相同的效果,但您可以获得更多的可能性;您可以设置(除其他外) Foreground
或Background
属性:
<TextBlock>
Sample text with <Span FontWeight="Bold">bold</Span>, <Span FontStyle="Italic">italic</Span> and <Span TextDecorations="Underline">underlined</Span> words. <Span Foreground="Blue">Coloring</Span> <Span Foreground="Red">is</Span> <Span Background="Cyan">also</Span> <Span Foreground="Silver">possible</Span>.
</TextBlock>
Span
元素还可以包含如下所示的其他元素:
<TextBlock>
<Span FontStyle="Italic">Italic <Span Background="Yellow">text</Span> with some <Span Foreground="Blue">coloring</Span>.</Span>
</TextBlock>
还有另一个元素,它与Span
非常相似,叫做Run
。Run
不能包含其他内联元素,而Span
可以,但您可以轻松地将变量绑定到Run
的Text
属性:
<TextBlock>
Username: <Run FontWeight="Bold" Text="{Binding UserName}"/>
</TextBlock>
此外,如果您愿意,也可以从代码隐藏进行整个格式化:
TextBlock tb = new TextBlock();
tb.Inlines.Add("Sample text with ");
tb.Inlines.Add(new Run("bold") { FontWeight = FontWeights.Bold });
tb.Inlines.Add(", ");
tb.Inlines.Add(new Run("italic ") { FontStyle = FontStyles.Italic });
tb.Inlines.Add("and ");
tb.Inlines.Add(new Run("underlined") { TextDecorations = TextDecorations.Underline });
tb.Inlines.Add("words.");
https://stackoverflow.com/questions/5263055
复制相似问题