我想将版本集合绑定到我的数据网格-
public ObservableCollection<Version> versions { get; set; }
public class Version
{
public string versionName { get; set; }
public ObservableCollection<Revision> Revisions { get; set; }
}
public class Revision
{
public string revNumber{ get; set; }
public string Comment { get; set; }
}
数据网格应如下所示-
我知道如何将简单集合绑定到数据网格。但我的要求是为单个versionName显示多个修订。我不知道该怎么做。
下面是我的XAMl代码-
<DataGrid Grid.Column="1" Grid.Row="0" Name="DataGridVersion" RowHeaderWidth="0" CanUserAddRows="False" AutoGenerateColumns="False" ItemsSource="{Binding Path=versions}" CanUserDeleteRows="False" Margin="25.2,82,22,19" IsReadOnly="True">
<DataGrid.Columns>
<DataGridTextColumn Header = "Version" Binding = "{Binding versionName }" Width="0.35*" IsReadOnly="True"/>
<DataGridTextColumn Header = "Revision" Binding = "{Binding Revisions }" Width=" 0.2*" IsReadOnly="True"/>
<DataGridTextColumn Header = "Comment" Binding = "{Binding comment }" Width="0.6*" IsReadOnly="True"/>
</DataGrid>
谢谢!
答案 0 :(得分:3)
您应检查Datagrid控件的Grouping function。
编辑:看到您的数据结构,您还可以创建一个DatagridTemplateColumn并添加一个列表框,该列表框的itemssource绑定到Revisions属性。
答案 1 :(得分:1)
您可以将DataGridTemplateColumn
与ItemsControl
一起使用:
<DataGrid Grid.Column="1" Grid.Row="0" Name="DataGridVersion" RowHeaderWidth="0"
CanUserAddRows="False" AutoGenerateColumns="False" ItemsSource="{Binding Path=versions}"
CanUserDeleteRows="False" Margin="25.2,82,22,19" IsReadOnly="True">
<DataGrid.Columns>
<DataGridTextColumn Header = "Version" Binding = "{Binding versionName }" Width="0.35*" IsReadOnly="True"/>
<DataGridTemplateColumn Header="Revisions" Width=" 0.2*" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding Revisions}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding revNumber}" />
<TextBlock Text="{Binding Comment}" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
如果您希望在DataGrid
中有一个实际的修订和注释列,则应绑定到ObservableCollection<T>
,其中类型T
包含三个属性。 versionName
,revNumber
和Comment
。然后,您将不得不转换数据:
var transformed = versions
.SelectMany(x => x.Revisions.Select(y => new { x.versionName, y.revNumber, y.Comment }))
.ToArray();