将按钮的文本设置为在 WPF 中包含一些粗体字符

Posted

技术标签:

【中文标题】将按钮的文本设置为在 WPF 中包含一些粗体字符【英文标题】:Setting a button's text to have some bold characters in WPF 【发布时间】:2011-01-17 16:17:15 【问题描述】:

我想知道是否可以在 WPF 中定义为 Button 的文本,例如: a b c

我试过设置 alt text http://img651.imageshack.us/img651/1838/ctldhrzhy41gbrcch4dpjz4.png

但这似乎不起作用。

是否只能将Bold标签与FlowDocuments一起使用?

谢谢

【问题讨论】:

【参考方案1】:

我能想到的最简单的解决方案:

 private void ButtonClick(object sender, RoutedEventArgs e)
 
     string buttonText = (sender as Button).Content.ToString();
 

【讨论】:

【参考方案2】:

使用TextBlock 保存格式化文本:

<Button>
  <TextBlock>Hey <Bold>you</Bold>!!!</TextBlock>
</Button>

根据您的评论,如果您想明确说明这会设置 Content 属性,您可以使用 XAML 属性元素语法来执行此操作:

<Button>
  <Button.Content>
    <TextBlock>Hey <Bold>you</Bold>!!!</TextBlock>
  </Button.Content>
</Button>

但是这是多余的,因为Button 有一个ContentPropertyAttribute,这使得第一个版本与第二个版本完全相同。

【讨论】:

完美!这样就可以了。现在,有什么办法可以把它放在 Contents 中吗?不是我需要它,只是想了解这里发生了什么。 没有。一个属性只能保存纯文本。 做你想做的事的唯一方法就是发布。使用 Content 属性时,与在旧 WinForms 中设置文本相同。 是,但仅使用 XAML 属性元素语法。我已经更新了答案以显示如何,但重申一下,这样做是多余的:按钮的子元素无论如何都会自动成为它的内容。 在 VS2017 中可以用同样的方法吗?请帮忙,因为我无法这样做【参考方案3】:

试试&lt;Button&gt;&lt;TextBlock&gt;a&lt;Bold&gt;b&lt;/Bold&gt;c&lt;/TextBlock&gt;&lt;/Button&gt;

【讨论】:

【参考方案4】:

这会起作用。

<Grid>
   <Button Name="button1" Width="40" Height="40" 
           Content="something" FontWeight="Bold" />
</Grid>

【讨论】:

以上是关于将按钮的文本设置为在 WPF 中包含一些粗体字符的主要内容,如果未能解决你的问题,请参考以下文章

将括号中包含多个字符串的文本解析为数组

非粗体文本占据粗体文本的空间[重复]

在绘图表达式中包含文本控制字符

如何在静态文本标签中包含特殊字符?

iOS 在突出显示或选择时将按钮文本更改为粗体

iOS推送通知中的标题(粗体文本)和正文