Выделите слово в текстовом блоке Silverlight - PullRequest
3 голосов
/ 16 февраля 2011

Мне нужен способ выделить текст в текстовом блоке или текстовом поле silverlight.Это предназначено для выделения результатов поиска, например, если вы попытаетесь в браузере нажать Ctrl + F и выполнить поиск слова, браузер выделит соответствующие слова.

Ответы [ 2 ]

2 голосов
/ 16 февраля 2011

В текстовом блоке вы можете использовать Run для выделения слов, например: -

  <TextBlock>Ordinary Text&#160;<Run Foreground="Red">Highlighted Text</Run>&#160;More Ordinary Text</TextBlock>

Обратите внимание на использование символьной сущности Xml &#160, которая является неразрывным пробелом, что необходимо, поскольку синтаксический анализ Xaml (как результат его зависимости от синтаксического анализа XML) означает пробел непосредственно перед < и белый пробел сразу после > игнорируется.

0 голосов
/ 22 февраля 2011

У меня была похожая проблема, и я нашел этот вопрос на форуме Silverlight.Может быть, это может помочь вам.

Как выделить определенное НЕПРАВИЛЬНОЕ слово в текстовом поле, чтобы сделать функцию проверки правописания

Вот как я бы реализовал функцию поиска:

private void Find(RichTextBox richTextBox, string term)
{
    var builder = new StringBuilder();

    var inlines = richTextBox.Blocks
        .OfType<Paragraph>()
        .SelectMany(paragraph => paragraph.Inlines);

    foreach( var inline in inlines )
    {
        builder.Append(((Run)inline).Text);
    }

    var regex = new Regex(term);
    var matchedStrings = regex.Matches(builder.ToString());
    foreach( var item in matchedStrings )
    {
        // Whatever you want to do.
    }
}
...