У меня есть просмотр списка, который связан с ThreadSafeObservableCollection. Фон каждого из этих элементов настроен на перечисление, которое запускается через конвертер цветов, вот код для этих двух настроек.
<UserControl.Resources>
<EncoderView:EncoderStatusToColorConverter x:Key="ColorConverter"/>
<Style x:Key="ItemContStyle" TargetType="{x:Type ListViewItem}">
<Setter Property="Background" Value="{Binding Converter={StaticResource ColorConverter}}" />
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</UserControl.Resources>
Я хочу, чтобы цвет фона listviewItem изменялся с Red - Yellow - Green в зависимости от значения перечисления. Который обновляется на основе правил бизнес-логики. В настоящее время это работает, но только для начального отображения элемента. Когда я изменяю свойство «Status» объекта, к которому привязан listItemView, фон не обновляется. Если я удаляю объект из коллекции, меняю статус, а затем снова добавляю его в коллекцию, фон обновляется.
Я попытался создать объект IPropertyNotify и выдать событие в установщик изменения свойства status, но это не сработало.
Кто-нибудь знает, нужно ли мне что-то особенное сделать, чтобы обновить фон элемента списка. Я также открыт для других идей о том, как решить эту проблему, спасибо.
вот XAML для ListView.
EncoderService.Encoders - это моя ThreadSafeObservableCollection объектов Encoder.
<ListView AutomationProperties.AutomationId="FinishScreen"
ItemsSource="{Binding Path=EncoderService.Encoders}"
x:Name="DataListView" Grid.RowSpan="1" Grid.Row="1" Margin="5"
ItemContainerStyle="{StaticResource ItemContStyle}"
Background="Azure">
<ListView.View>
<GridView>
<GridViewColumn Header="MAC">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ContentControl Content="{Binding Path=MAC}" ToolTip="{Binding Path=MAC}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="IDF">...