Выделите слово в текстовом блоке silverlight

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


person Lance    schedule 16.02.2011    source источник


Ответы (2)


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

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

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

person AnthonyWJones    schedule 16.02.2011
comment
Привет, Энтони, спасибо за ответ, но мне нужно, чтобы он выделил фон, не изменяя текст переднего плана. - person Lance; 21.02.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.
    }
}
person mrtaikandi    schedule 22.02.2011
comment
Что мне нужно здесь реализовать, так это функцию поиска. Вот почему мне нужно выделить фон. - person Lance; 23.02.2011