2015-12-21 124 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; 
    } 
}