某些背景信息: 我试图突出显示数据绑定TextBox或RichTextBox中所有搜索文本的出现。
到目前为止我发现了什么: 我想出了如何在RichTextBox中突出显示文本:
<RichTextBox>
<FlowDocument>
<Paragraph>
<Run>In this</Run>
<Run Background="Yellow">example</Run>
<Run>the word</Run>
<Run Background="Yellow">example</Run>
<Run>is highlighted.</Run>
</Paragraph>
</FlowDocument>
</RichTextBox>
问题: 例如,我如何通过使用一些IValueConverter绑定此RichTextBox,以便突出显示所有出现的表达式“example”?
答案 0 :(得分:0)
string example = "example";
string exampleDoc = "hello, example, hello example.";
FlowDocument doc =
new FlowDocument(new Paragraph(new Run("hello, example, hello example.")));
int pos = 0;
while (0 <= (pos = exampleDoc.IndexOf(example)))
{
new Bold(doc.ContentStart.GetPositionAtOffset(pos),
doc.ContentStart.GetPositionAtOffset(pos + example.Length));
}
这将帮助您入门。将它放在ValueConverter中从字符串到FlowDocument并使用要突出显示的单词的ConverterParameter很容易。当您添加更多格式时,请注意TextPointer的更改,您会看到左侧突出显示的位置。我相信你会找到在你的情况下处理这个问题的最佳方法。