突出显示silverlight文本块中的单词

时间:2011-02-16 09:50:00

标签: silverlight textbox highlight textblock

我需要一种方法来突出显示silverlight文本块或文本框中的文本。这是为了突出显示搜索结果,例如,如果您尝试在浏览器中按Ctrl + F并搜索单词,浏览器将突出显示匹配的单词。

2 个答案:

答案 0 :(得分:2)

在文本块中,您可以使用Run突出显示单词,例如: -

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

注意使用Xml字符实体&#160这是非破坏性空间,这是必要的,因为Xaml解析(由于它依赖于XML解析)意味着直接在{{1之前的空白空间在忽略<之后直接显示空格和空格。

答案 1 :(得分:0)

我遇到过类似的问题,并在Silverlight论坛中发现了这个问题。也许它可以帮助你。

How to Highlight a particular WRONG word in Textbox to make SpellCheck feature

这就是我实现搜索功能的方法:

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.
    }
}