ThreadSafeObservableCollectionにバインドされているリストビューがあります。これらの各アイテムの背景は、カラーコンバーターを介して実行される列挙型に設定されています。これら2つの設定のコードは次のとおりです。
<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の背景色が列挙値に基づいて赤-黄-緑に変わることです。これは、ビジネスロジックルールに基づいて更新されます。これは現在機能していますが、アイテムの初期表示のみです。listItemViewがバインドされているオブジェクトの「Status」プロパティを変更しても、背景が更新されません。コレクションからオブジェクトを削除し、ステータスを変更してから、コレクションに再度追加すると、背景が更新されます。
オブジェクトIPropertyNotifyを作成し、statusプロパティchanged setterにイベントをスローしようとしましたが、機能しませんでした。
リストビューアイテムの背景を更新するために私がしなければならない特別なことがあるかどうか誰かが知っていますか。この問題を解決する方法については、他のアイデアも受け付けています。ありがとうございます。これがListViewのXAMLです。EncoderService.Encodersは、エンコーダーオブジェクトの私のThreadSafeObservableCollectionです。
<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">...