有没有办法在WPF ListBox项的运行时更改特定单词/字符串的颜色



所以我只想在运行时在列表框的行/项中添加一个特定的单词,因为我在运行时使用计时器从数据库中添加项目,我希望这个特定的单词/字符串有不同的颜色。

即:所有添加的包含字符串/单词"Aproved"的新项目,在运行时一个新项目添加到WPF ListBox中,就应该被涂成绿色。

private void dispatcherTimerMensagem_Tick(object sender, EventArgs e)
{
if (!(principalDB.testarConexãoDB()))
{
dispatcherTimerVendasFechadas.Stop();
dispatcherTimerMensagem.Stop();
LstMensagem.ItemsSource = null;
LbPbVendasFechadas.ItemsSource = null;
}
else
{
mensagem = principalDB.selectMessagemUsuario(null);
if (mensagem != string.Empty)
{
this.Activate();
LstMensagem.Opacity = 1;
LstMensagem.Items.Add(principalDB.mensagemRemetente + " (" + principalDB.mensagemData + ")" + ": " + mensagem);
voice.Voice = voice.GetVoices().Item(0);
myWorkerMensagem.WorkerReportsProgress = true;
myWorkerMensagem.WorkerSupportsCancellation = true;
myWorkerMensagem.RunWorkerAsync();
if (VisualTreeHelper.GetChildrenCount(LstMensagem) > 0)
{
Border border = (Border)VisualTreeHelper.GetChild(LstMensagem, 0);
ScrollViewer scrollViewer = (ScrollViewer)VisualTreeHelper.GetChild(border, 0);
scrollViewer.ScrollToBottom();
}
}
else
{
LstMensagem.Opacity = 0.5;
}
}
}

因此LstMensage将在运行时从以下代码行中声明的变量中接收一个新项目:

LstMensagem.Items.Add(principalDB.mensagemRemetente + " (" + principalDB.mensagemData + ")" + ": " + mensagem);

如果出现一个特定的单词/字符串,例如"aproved",我希望该字符串具有不同的文本颜色,例如刷成绿色。

请使用TextBlock字符串。对于整个项目:

var text =  principalDB.mensagemRemetente + " (" + principalDB.mensagemData + ")" + ": " + mensagem;
var tb = new TextBlock();
tb.Text = text;
if(text.Contains("aproved"))
tb.Foreground = Brushes.Green;
LstMensagem.Items.Add(tb);

仅对项目的一部分,使用Inlines属性添加不同格式的文本:

var tb = new TextBlock();
tb.Inlines.Add(new Run { Foreground = Brushes.Green, Text = 
principalDB.mensagemRemetente});
tb.Inlines.Add(" (" + principalDB.mensagemData + ")" + ": " + mensagem);
LstMensagem.Items.Add(tb);

最新更新