Как изменить цвет элементов 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 и выделить. Я пробовал это сделать конвертером, но не получилось. Как это все правильно сделать?


Ответы (0 шт):