Коллекция привязок DataGrid с вложенными свойствами - PullRequest
0 голосов
/ 20 декабря 2011

У меня есть класс Person и Address. Класс Person имеет такие свойства, как Имя, Пол и т. Д. И Адрес. Класс Address имеет такие свойства, как Street, City, как строки. Если у меня есть коллекция Person под названием "people", то есть List (Of Person). И я связываю «людей» с DataGrid в WPF. Столбец «Имя» в порядке, но столбец «Город» всегда пуст.

Class Address
Sub New()
End Sub
Private _city As String
Property City() As String
Get
Return _city 
End Get
Set(ByVal value As String)
_city = vaule
End Set
End Property
End Class

Class Person
Sub New()
End Sub
Private _name As String = ""
Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = vaule
End Set
End Property

Private _address As Address
Property Address() As Address
Get
Return _address 
End Get
Set(ByVal value As Address)
_address = vaule
End Set
End Property

End Class

Под событием Window_Loaded у меня есть

Dim people As List(of Person) = _DAL.GetAllPeople()
Me.myDataGrid.ItemsSource = people

Dim nameBinding As Binding = New Binding
nameBinding.Path = New PropertyPath("Name") 
Me.nameColumn.Binding = nameBinding 'This works fine in datagrid

Dim addressBinding As Binding = New Binding

addressBinding.Path = New PropertyPath("Address.City")
Me.cityColumn.Binding = addressBinding 'This does not work

КОД XAML:

<DataGrid x:Name="myDataGrid" HorizontalAlignment="Left" Margin="8,177.4,0,38" Width="240" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTextColumn x:Name="nameColumn" CanUserResize="False" IsReadOnly="True" Header="Name" Width="100"/>
<DataGridTextColumn x:Name="cityColumn" CanUserResize="False" Header="City" IsReadOnly="True" Width="*" />
</DataGrid.Columns>
</DataGrid>
...