绑定ObservableCollection<;元组<;对象,列表<;对象>>>;到DataGr
本文关键字:gt lt 对象 DataGr 列表 元组 ObservableCollection 绑定 | 更新日期: 2023-09-27 18:27:14
我有一个带有元组的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中项目1的几个设备的列表。我的DataGrid应该看起来像:
Sender Receiver
Device 1 Device 2
Device 3
Device 5
Device 2 Device 1
Device 3 Device 2
Device 4
在第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
,以保存子列表中的项目列表。