2010-12-18 94 views
2

我試圖突出一個列表框數據綁定文本和突出字符串匹配完全一樣的Windows Phone的電子郵件應用程序7在WP7數據綁定高亮顯示文本列表框

搜索按鈕拉起一個彈出,並在TextChanged事件,我正在從主列表中篩選並重新設置DataContext:

private void txtSearch_TextChanged(object sender, TextChangedEventArgs e) 
{ 
    results = allContent.Where(
    x => x.Content.Contains(txtSearch.Text) 
).ToList(); 

    DataContext = results; 
} 

該部分工作得很好。問題在於突出顯示匹配的文本。我試過在各種事件(Loaded,ItemsChanged)中迭代ListBoxItems,但它們總是空的。

有關如何在數據綁定ListItem的子文本框中完成文本高亮顯示的任何想法?

回答

2

這裏是我去解決:

private void ResultsText_Loaded(object sender, RoutedEventArgs e) 
{ 
    var textBlock = sender as TextBlock; 
    if (txtSearch.Text.Length > 0 && textBlock.Text.Length > 0) 
    { 
     BoldText(ref textBlock, txtSearch.Text, Color.FromArgb(255, 254, 247, 71)); 
    } 
} 

public static void BoldText(ref TextBlock tb, string partToBold, Color color) 
{ 
    string Text = tb.Text; 
    tb.Inlines.Clear(); 

    Run r = new Run(); 
    r.Text = Text.Substring(0, Text.IndexOf(partToBold)); 
    tb.Inlines.Add(r); 

    r = new Run(); 
    r.Text = partToBold; 
    r.FontWeight = FontWeights.Bold; 
    r.Foreground = new SolidColorBrush(color); 
    tb.Inlines.Add(r); 

    r = new Run(); 
    r.Text = Text.Substring(Text.IndexOf(partToBold) + partToBold.Length, Text.Length - (Text.IndexOf(partToBold) + partToBold.Length)); 
    tb.Inlines.Add(r); 
} 
相關問題