我有一个ObservableCollection of Measurement-Objects
Dim measurement As New Collections.ObjectModel.ObservableCollection(Of Measurement)
测量的地方
Public Class Measurement
Public Property Value As Single
Public Property Unit As String
Public Property Enviroment As Enviroment
End Class
和Enviroment(简化)
Public Class Enviroment
Public Equipment As String
End Class
现在我将此Collection绑定到ListView
<ListView ItemsSource="{Binding}">
<ListView.Resources>
<my:SingleToStringConverter x:Key="singleToString"></my:SingleToStringConverter>
<DataTemplate x:Key="ValueTemplate">
<TextBlock Text="{Binding Value, Converter={StaticResource singleToString}}"></TextBlock>
</DataTemplate>
</ListView.Resources>
<ListView.View>
<GridView>
<GridViewColumn Header="Value" CellTemplate="{StaticResource ValueTemplate}"></GridViewColumn>
<GridViewColumn Header="Unit" DisplayMemberBinding="{Binding Unit}"></GridViewColumn>
<GridViewColumn Header="Enviroment" DisplayMemberBinding="{Binding Enviroment.Equipment}"></GridViewColumn>
</GridView>
</ListView.View>
</ListView>
完成;转换器是:
Public Class SingleToStringConverter
Implements IValueConverter
Public Function Convert(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert
Return CSng(value).ToString(Globalization.CultureInfo.InvariantCulture)
End Function
Public Function ConvertBack(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.ConvertBack
Return CSng(value.ToString)
End Function
End Class
但ListView不显示SubObject Eviroment的任何属性。它不支持INotifyPropertyChanged,但我确定它在添加到集合之前就已存在。但现在显示了值。 有人可以帮忙吗?
答案 0 :(得分:3)
您尝试绑定到字段而不是属性。我认为你的Enviroment-Object应该是这样的:
Public Class Enviroment
Public **Property** Equipment As String
End Class
您无法绑定到公共字段。