首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >设置TextBlock中的文本格式

设置TextBlock中的文本格式
EN

Stack Overflow用户
提问于 2011-03-11 00:57:44
回答 5查看 157.6K关注 0票数 113

如何在WPF应用程序中实现TextBlock控件中文本的格式设置?

例如:我希望某些单词是粗体的,其他的是斜体的,还有一些是不同颜色的,比如这个例子:

我的问题背后的原因是这个实际的问题:

代码语言:javascript
复制
lblcolorfrom.Content = "Colour From: " + colourChange.ElementAt(3).Value.ToUpper();

我希望字符串的第二部分是粗体的,并且我知道我可以使用两个控件(Label、TextBlocks等)。但我不希望这样,因为已经有大量的控件在使用。

EN

回答 5

Stack Overflow用户

发布于 2011-03-11 01:01:45

您需要使用Inlines

代码语言:javascript
复制
<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>

使用绑定:

代码语言:javascript
复制
<TextBlock.Inlines>
    <Run FontWeight="Bold" FontSize="14" Text="{Binding BoldText}" />
    <Run FontStyle="Italic" Foreground="Red" Text="{Binding ItalicText}" />
</TextBlock.Inlines>

您还可以绑定其他属性:

代码语言:javascript
复制
<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 (比方说),你可以通过转换器绑定。

票数 155
EN

Stack Overflow用户

发布于 2011-10-14 10:48:45

在XAML中可以很容易地做到这一点:

代码语言:javascript
复制
<TextBlock>
  Hello <Bold>my</Bold> faithful <Underline>computer</Underline>.<Italic>You rock!</Italic>
</TextBlock>
票数 107
EN

Stack Overflow用户

发布于 2014-06-27 20:52:34

有各种Inline元素可以帮助您,对于最简单的格式选项,您可以使用BoldItalicUnderline

代码语言:javascript
复制
<TextBlock>
    Sample text with <Bold>bold</Bold>, <Italic>italic</Italic> and <Underline>underlined</Underline> words.
</TextBlock>

我认为值得注意的是,这些元素实际上只是设置了各种属性的Span元素的缩写(即:对于BoldFontWeight属性被设置为FontWeights.Bold)。

这就引出了下一个选择:前面提到的Span元素。

您可以使用此元素实现与上面相同的效果,但您可以获得更多的可能性;您可以设置(除其他外) ForegroundBackground属性:

代码语言:javascript
复制
<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元素还可以包含如下所示的其他元素:

代码语言:javascript
复制
<TextBlock>
    <Span FontStyle="Italic">Italic <Span Background="Yellow">text</Span> with some <Span Foreground="Blue">coloring</Span>.</Span>
</TextBlock>

还有另一个元素,它与Span非常相似,叫做RunRun不能包含其他内联元素,而Span可以,但您可以轻松地将变量绑定到RunText属性:

代码语言:javascript
复制
<TextBlock>
    Username: <Run FontWeight="Bold" Text="{Binding UserName}"/>
</TextBlock>

此外,如果您愿意,也可以从代码隐藏进行整个格式化:

代码语言:javascript
复制
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.");
票数 55
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5263055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档