Как изменить цвет элементов listbox во вьюмодели?
У меня есть listbox, который содержит в себе различные топики("/reply", "api/error" и тд).
<ListBox x:Name="MessageListBox" Grid.Row="1"
IsVisible="{Binding IsMessageListBoxVisible}"
SelectedItem="{Binding ReceivedApplicationMessages.SelectedItem}"
Items="{Binding ReceivedApplicationMessages}"
AutoScrollToSelectedItem="False">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel VerticalAlignment="Top"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ContextMenu>
<ContextMenu>
<MenuItem Header="Show all commands linked by TraceID" Command="{Binding ShowCommandsByTraceId}"></MenuItem>
</ContextMenu>
</ListBox.ContextMenu>
<ListBox.Styles>
Моя задача состоит в следующем: выделить цветом все топики, которые подошли под определенное условие. Но главная проблема - то, что выделение должно быть по нажатию на элемент.
Метод ShowCommandsByTraceId делает следующее:
public void ShowCommandsByTraceId()
{
// get id of selected item
var header = ReceivedApplicationMessages.SelectedItem.Details.Header;
if ( header == null ) return;
var headerDetails = JsonConvert.DeserializeObject<HeaderData>( header );
var id = headerDetails?.Id;
var topicNames = ReceivedApplicationMessages
.Where( x => x.Details.HeaderTraceId == id )
.Select( x => x.Topic )
.ToList();
traceIdTopics.AddRange( topicNames );
}
static public ViewModelCollection<string?> TraceIdTopics => traceIdTopics;
static private ViewModelCollection<string?> traceIdTopics { get; } = new ();
Получается, что в TraceIdTopics есть какие-то топики. Теперь нужно найти их всех в listbox и выделить. Я пробовал это сделать конвертером, но не получилось. Как это все правильно сделать?