【问题标题】:Spacing between inline elements in WPF textblockWPF 文本块中内联元素之间的间距
【发布时间】:2017-06-28 18:19:27
【问题描述】:

我正在以编程方式将 Run 元素添加到 TextBlock 控件。我希望这些内联元素等间距。

TextBlock txtblck = new TextBlock();
txtblck.Inlines.Add(new Run() { Text = "a"});
txtblck.Inlines.Add(new Run() { Text = "b"});
txtblck.Inlines.Add(new Run() { Text = "c"});

现在它显示为“abc”。但我想显示为“a b c”。可能吗?请帮帮我。

此外,当我们在 XAML 中添加内联元素时,字符之间会添加空格。但我仅在运行时获取文本块的文本。所以我不能在 XAML 中添加内联元素。

提前致谢。

【问题讨论】:

    标签: c# wpf textblock


    【解决方案1】:

    如果需要,您应该添加空格:

    TextBlock txtblck = new TextBlock();
    txtblck.Inlines.Add(new Run() { Text = "a " });
    txtblck.Inlines.Add(new Run() { Text = "b " });
    txtblck.Inlines.Add(new Run() { Text = "c" });
    

    无需创建任何额外的Run 元素。并且Run元素之间不会自动添加空格。

    【讨论】:

      【解决方案2】:

      解释了在 XAML 中添加运行时在字符之间添加空格的原因here

      要在代码中添加空格,您可以添加额外的带有空格的 Run 元素:

      txtblck.Inlines.Add(new Run() { Text = "a"});
      txtblck.Inlines.Add(new Run() { Text = " "});
      txtblck.Inlines.Add(new Run() { Text = "b"});
      txtblck.Inlines.Add(new Run() { Text = " "});
      txtblck.Inlines.Add(new Run() { Text = "c"});
      

      或将空格直接附加到文本中:

      txtblck.Inlines.Add(new Run() { Text = "a" + " "});
      txtblck.Inlines.Add(new Run() { Text = "b" + " "});
      txtblck.Inlines.Add(new Run() { Text = "c" });
      

      【讨论】: