我有一个带有元组的ObservableCollection,并希望将它绑定到我的DataGrid。这是ObservableCollection:
ObservableCollection<Tuple<NetworkItem, List<NetworkItem>>> ListNetworkItems = new ObservableCollection<Tuple<NetworkItem, List<NetworkItem>>>();
这是我的DataGrid:
<DataGrid x:Name="NetworkDataGrid"
ItemsSource="{Binding ListNetworkItems}" >
<DataGrid.Columns>
<DataGridTemplateColumn Header="Sender">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Item1.Device.Name, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Receiver">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Item2.Device.Name, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
问题是,如何绑定ObservableCollection中的第二项?这是ObservableCollection中item1下面的几个设备的列表。我的DataGrid应该如下所示:
Sender Receiver
Device 1 Device 2
Device 3
Device 5
Device 2 Device 1
Device 3 Device 2
Device 4
答案 0 :(得分:1)
您需要在第2列的单元格中使用某种列表控件来显示您的子列表。
这样的事情应该有效:
<DataGridTemplateColumn Header="Receiver">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding Item2}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Device.Name, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
这将在Receiver列的每个单元格中创建一个ItemsControl
,以保存子列表中的项目列表。