を作成し、プロパティにバインドして有効な色に変換する をWPF ListBox
設定しました。
これは、Listbox が最初にロードされたときに機能するため、バインディングやコンバーターに問題はありません。itemcontainerstyle
<ListBox Grid.Column="0" Grid.Row="1" ItemsSource="{Binding Diensten}"
SelectedItem="{Binding SelectedDienst, Mode=TwoWay}" BorderBrush="LightGray" BorderThickness="2" Background="Transparent">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Background" Value="{Binding Path=IsActive, Converter={StaticResource BooleanToListBoxBgColorConverter}}" />
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<telerik:Label Content="{Binding Path=Dienst.Description}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
しかし、selectedItem が変更されると、refreshView メソッドで PropertyChangedMethod をトリガーして ListBox を更新します。
しかし残念なことに、私のスタイルはバインディングの新しい値に適用されません。
リストボックス用に最初に作成されたスタイルが更新されなかったようです
Public Property Diensten() As List(Of ToegangDienst)
Get
Return _diensten
End Get
Set(value As List(Of ToegangDienst))
_diensten = value
FirePropertyChanged("Diensten")
End Set
End Property
Public Property SelectedDienst() As ToegangDienst
Get
Return _selectedDienst
End Get
Set(value As ToegangDienst)
If Diensten.Contains(value) Then
UpdateDienstToDetails(value)
_selectedDienst = value
FirePropertyChanged("SelectedDienst")
RefreshView()
End If
End Set
End Property
Private Sub RefreshView()
FirePropertyChanged("Diensten")
FirePropertyChanged("IsBusy")
FirePropertyChanged("IsVisible")
_ribbonViewModel.EvaluateCommands()
End Sub
スタイルを更新する方法についても何か提案はありますか?
奇妙なことに、プロパティ変更メソッドを起動するのではなく、次のコード行で問題を解決できます。
Diensten = Diensten.AsEnumerable().ToList()
私は実用的な解決策を持っていますが、これを達成するためのよりクリーンな方法を好むでしょう。