2015-12-21 78 views
0

我需要做一些搜索文本框(或其他控件),但我不能找到很好的解决办法...搜索Windows商店应用文本

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

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

但在Windows应用商店我没有RichTextBox,这里是RichTextBlockRichEditBox并与此控件我无法找到方式来搜索文本。

这甚至可能吗?也许我可以使用一些外部库? 请帮助和Thanx。

回答

0

您可以使用TextBox(用于输入)和TextBlock(用于高亮显示的内容)。 TextBox控件有一个名为TextChanged的事件引发每个按键。 TextBlock有一个名为Inlines的属性,你可以放一些文本元素(比如Span,Run等)。 你的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; 
    } 
}