0
我創建了一個WPF ListBox
並設置itemcontainerstyle
綁定到屬性並將其轉換爲有效的顏色。
這適用於最初加載列表框時,所以綁定或轉換器沒有問題。WPF ListBox樣式更新doens't工作
<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()
我有一個有效的解決方案,但我更喜歡一些更清潔的方式爲了達成這個。
如果我理解你IsActive屬性將不發射的風格吧?你在哪裏管理你的代碼中這個屬性的變化? – michele 2013-02-20 11:30:09
我的列表框被綁定到:Diensten(List(Of Dienst))當這個列表使用propertychanged更新時,它被返回,但樣式不是 – JMan 2013-02-20 11:33:12
@michele更新我的問題 – JMan 2013-02-20 11:46:29