Как выделить, а не выделить текст в привязанном к данным WPF TextBox или RichTextBox? - PullRequest
0 голосов
/ 03 июля 2011

Некоторый контекст: Я пытаюсь выделить все вхождения некоторого искомого текста в привязанном к данным 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, чтобы все вхождениявыражение "пример" подсвечивается?

1 Ответ

0 голосов
/ 03 июля 2011
     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, когда вы добавляете больше форматов, вы увидите смещение подсветки влево.Я уверен, что вы найдете лучший способ справиться с этим в вашей ситуации.

...