什么是XAML的代码相当于保留空格?

时间:2011-11-12 12:15:34

标签: c# wpf xaml whitespace

什么是c#代码相当于以下XAML,我有一个RichTextBox并且我选择了Paragraph,我想在此段落上启用/禁用空格。在XAML中,我知道如何启用,但我需要在代码中执行此操作。

<Paragraph xml:space=\"preserve\">     Tabbed Code</Paragraph>

我发现了一个相当于它的对象,

void EnableWhiteSpace(Paragraph p, bool enable = true){
   if(enable){
         System.Windows.Markup.XmlAttributeProperties
              .SetXmlSpace(this.Document, "preserve");
   }
   else{
         System.Windows.Markup.XmlAttributeProperties
              .SetXmlSpace(this.Document, "default");
   }
}

这仍然无法正常工作!我没有得到标签!! ...

这是我的问题,我有一个RichTextBox,用于编辑代码并进行语法高亮显示。一切都很好,除非我打电话给我,我的代码中没有看到任何标签。

 TextRange tr = new TextRange(
                         myRichTextBox.Document.ContentStart,
                         myRichTextBox.Document.ContentEnd);
 string text = tr.Text;

我收到的文字没有标签,所以我认为在开始文字范围之前在每个段落上启用空格可能会给我标签。

更新

我尝试在段落中导航每个内联(运行),没有包含选项卡,我只是丢失所有选项卡:(

2 个答案:

答案 0 :(得分:3)

没有等价物。 XML选项xml:space="preserve"仅对解释 XML文件(在您的情况下,XAML,这是一种XML)有效,并且在C#中没有任何意义,因为不涉及XML文件

您的XAML代码的C#等价物如下:

Paragraph p = new Paragraph();
p.Inlines.Add(new Run("     Tabbed Code"));

答案 1 :(得分:0)

RichTextBox是错误的,它会忽略所有选项卡,但是它的WPF本身的问题并且无法在不执行复杂的解决方法的情况下得到修复。

Alernative是将您自己的FlowDocument写入文本转换器,但这非常复杂,因为节点不直接提供任何行或标记信息。