我正在尝试使我的WPF RichTextBox看起来像一个编码页面 .
我标记了一些单词以确定它是关键字还是字符串,...现在我有这样的文字:
<@$keyword>int<keyword$@> sum;
sum = 1;
Console.WriteLine(<@$string>"{0}"<string$@>,sum);
结果应该是这样的:
int sum;
sum = 1;
Console.WriteLine("{0}",sum);
但“int”为蓝色,“{0}”为粉红色 .
这是我的xaml RichTextBox代码:
<RichTextBox x:Name="richTextBox"
VerticalScrollBarVisibility="Auto">
<FlowDocument>
<Paragraph>
<Run Text="{Binding codeContent}"/>
</Paragraph>
</FlowDocument>
</RichTextBox>
我的问题参考this stackoverflow question但它似乎没有解决我的问题 .
因为我的WPF RichTextBox内置了FlowDocument,我们无法通过 String st = myRichtextBox.Text
之类的东西获取内容文本,我们需要使用TextRange来获取其中的文本: TextRange tr = new TextRange(rtb.Document.ContentStart,rtb.Document.ContentEnd)
.
但另一个问题是它得到了整个文本,而不是我想要的内容文本的一部分 . 示例:RichTextBox rtb包含: <@$keyword>int<keyword$@> sum;sum = 1;Console.WriteLine(<@$string>"{0}"<string$@>,sum);
,我想得到 <@$keyword>int<keyword$@>
和 <@$string>"{0}"<string$@>
并编辑它而不是整个文本 .
1 回答
tr.Text为您提供内容的纯字符串 . 现在你有一个字符串用于下面的regex / substrings:
How to select text from the RichTextBox and then color it?