如何在数据绑定的WPF TextBox或RichTextBox中突出显示而不是选择文本?

时间:2011-07-03 11:36:00

标签: wpf data-binding textbox binding richtextbox

某些背景信息: 我试图突出显示数据绑定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”?

1 个答案:

答案 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的更改,您会看到左侧突出显示的位置。我相信你会找到在你的情况下处理这个问题的最佳方法。