在 windows 商店应用中搜索文字
Search for text in windows store app
我需要在某些文本框(或其他控件)中进行搜索,但找不到好的解决方案...
为了更清楚,我有一个文本框,当我在其中键入文本时,我需要突出显示其他 control
中的文本。
在 winform 应用程序中,我为此编写代码,并使用 RichTextBox
,这不是一个大问题。
但是在 windows 商店应用程序中我没有 RichTextBox
,这里有 RichTextBlock
和 RichEditBox
,使用这个控件我找不到搜索文本的方法。
这可能吗?也许我可以使用一些外部库?
请帮忙,谢谢。
您可以使用 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;
}
}
我需要在某些文本框(或其他控件)中进行搜索,但找不到好的解决方案...
为了更清楚,我有一个文本框,当我在其中键入文本时,我需要突出显示其他 control
中的文本。
在 winform 应用程序中,我为此编写代码,并使用 RichTextBox
,这不是一个大问题。
但是在 windows 商店应用程序中我没有 RichTextBox
,这里有 RichTextBlock
和 RichEditBox
,使用这个控件我找不到搜索文本的方法。
这可能吗?也许我可以使用一些外部库? 请帮忙,谢谢。
您可以使用 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;
}
}