在 windows 商店应用中搜索文字

Search for text in windows store app

我需要在某些文本框(或其他控件)中进行搜索,但找不到好的解决方案...

为了更清楚,我有一个文本框,当我在其中键入文本时,我需要突出显示其他 control 中的文本。

在 winform 应用程序中,我为此编写代码,并使用 RichTextBox,这不是一个大问题。

但是在 windows 商店应用程序中我没有 RichTextBox,这里有 RichTextBlockRichEditBox,使用这个控件我找不到搜索文本的方法。

这可能吗?也许我可以使用一些外部库? 请帮忙,谢谢。

您可以使用 TextBox(用于输入)和 TextBlock(用于突出显示内容)。 TextBox 控件有一个名为 TextChanged 的​​事件,每次按下键都会引发该事件。 TextBlock 有一个名为 Inlines 的 属性,你可以在其中放置一些文本元素(如 Span、运行 等)。 您的 TextBlock 可以这样声明:

<TextBlock x:Name="MyTb">
    Lorem ipsum sit amet
</TextBlock>

您的文本框:

<TextBox TextChanged="TextBox_TextChanged" />

和 TextChanged 事件:

var txtToHighlight = (sender as TextBox)?.Text;
if (!string.IsNullOrWhiteSpace(txtToHighlight))
{
    var tb = MyTb;
    var currentTxt = tb.Text;
    tb.Inlines.Clear();
    var ix = currentTxt.IndexOf(txtToHighlight);
    if (ix >= 0)
    {
        var highlightContent = new Span { Foreground = new SolidColorBrush(Colors.Red) };
        highlightContent.Inlines.Add(new Run { Text = currentTxt.Substring(ix, txtToHighlight.Length) });

        tb.Inlines.Add(new Run { Text = currentTxt.Substring(0, ix) });
        tb.Inlines.Add(highlightContent);
        tb.Inlines.Add(new Run { Text = currentTxt.Substring(ix + txtToHighlight.Length) });
    }
    else
    {
        tb.Text = currentTxt;
    }
}