【问题标题】:WPF - TextBlock - Format Text ProgrammaticallyWPF - TextBlock - 以编程方式格式化文本
【发布时间】:2010-12-20 08:33:14
【问题描述】:

在 TextBlock 对象中,您可以像这样格式化 XAML 中的文本:

<TextBlock>
    <Bold>bold text</Bold> random non bold next
</TextBlock>

如何以编程方式添加“粗体”标签?

我尝试将它们放在 text 属性中,然后将它们打印出来(标签打印为文本)。

【问题讨论】:

标签: wpf xaml styles


【解决方案1】:

Visual Basic 版本:

Dim tb As New TextBlock

Dim b As New Bold
b.Inlines.Add(New Run("bold text"))

tb.Inlines.Add(b)
tb.Inlines.Add(New Run("random non bold text"))

C# 版本:

TextBlock tb = new TextBlock();
var bold = new Bold(new Run("Bold Text"));
tb.Inlines.Add(bold);

var normal = new Run("Normal Text"));
tb.Inlines.Add(normal);

【讨论】:

  • 有人知道像 tb.Inlines.Clear(); 这样的方法吗? tb.Inlines.Add(Parse(myXamlText)); ?
【解决方案2】:

这是来自 MSDN 网站的代码,我认为这会有所帮助 (http://msdn.microsoft.com/en-us/library/system.windows.controls.textblock.aspx)。

XAML

<TextBlock Name="textBlock1" TextWrapping="Wrap">
  <Bold>TextBlock</Bold> is designed to be <Italic>lightweight</Italic>,
  and is geared specifically at integrating <Italic>small</Italic> portions
  of flow content into a UI.
</TextBlock>
<Button Width="100" Margin="10">Click Me</Button>
<TextBlock  Name="textBlock2" 
  TextWrapping="Wrap" Background="AntiqueWhite" TextAlignment="Center"
>
  By default, a TextBlock provides no UI beyond simply displaying its contents.
</TextBlock>
<Button Width="100" Margin="10">Click Me</Button>

C#

TextBlock textBlock1 = new TextBlock();
TextBlock textBlock2 = new TextBlock();

textBlock1.TextWrapping = textBlock2.TextWrapping = TextWrapping.Wrap;
textBlock2.Background = Brushes.AntiqueWhite;
textBlock2.TextAlignment = TextAlignment.Center;

textBlock1.Inlines.Add(new Bold(new Run("TextBlock")));
textBlock1.Inlines.Add(new Run(" is designed to be "));
textBlock1.Inlines.Add(new Italic(new Run("lightweight")));
textBlock1.Inlines.Add(new Run(", and is geared specifically at integrating "));
textBlock1.Inlines.Add(new Italic(new Run("small")));
textBlock1.Inlines.Add(new Run(" portions of flow content into a UI."));

textBlock2.Text =
    "By default, a TextBlock provides no UI beyond simply displaying its contents.";

【讨论】:

    【解决方案3】:

    试试这个:

    textBlock1.FontWeight = Windows.UI.Text.FontWeights.Bold;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-06
      • 2011-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-04
      相关资源
      最近更新 更多