【问题标题】:Is it Possible to Nest Collections within Collections using Wpf DataGrid?是否可以使用 Wpf DataGrid 在集合中嵌套集合?
【发布时间】:2010-09-23 16:26:52
【问题描述】:

我想要一个简单的示例程序,它使用 Wpf DataGrid 在集合中嵌套集合。

【问题讨论】:

    标签: wpf collections datagrid nested


    【解决方案1】:

    这是一个使用 VB.Net 代码隐藏的实现。只需要代码来创建测试数据。

    Class MainWindow 
    
    Public Property cs As New List(Of c1)
    
    Sub New()
    
        ' This call is required by the designer.
        InitializeComponent()
    
        For i1 = 1 To 3
            Dim c1 = New c1
            cs.Add(c1)
            c1.c1text = i1
            For i2 = 1 To 3
                Dim c2 = New c2
                c1.c1col.Add(c2)
                c2.c2text = i1 & i2
                For i3 = 1 To 3
                    Dim c3 = New c3
                    c2.c2col.Add(c3)
                    c3.c3text = i1 & i2 & i3
                    For i4 = 1 To 3
                        Dim c4 = New c4
                        c3.c3col.Add(c4)
                        c4.c4text = i1 & i2 & i3 & i4
                        For i5 = 1 To 3
                            c4.c4col.Add(i1 & i2 & i3 & i4 & i5)
                        Next
                    Next
                Next
            Next
        Next
        DataGrid1.ItemsSource = cs
    End Sub
    
    End Class
    
    Public Class c1
        Public Property c1text As String
        Public Property c1col As New List(Of c2)
    End Class
    
    Public Class c2
        Public Property c2text As String
        Public Property c2col As New List(Of c3)
    End Class
    
    Public Class c3
        Public Property c3text As String
        Public Property c3col As New List(Of c4)
    End Class
    
    Public Class c4
        Public Property c4text As String
        Public Property c4col As New List(Of String)
    End Class
    

    这是 Xaml:

    <Window x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
    
    <Grid>
        <DataGrid Name="DataGrid1" IsReadOnly="True" AutoGenerateColumns="False" >
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding c1text}" />
                <DataGridTemplateColumn>
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <DataGrid Name="DataGrid2" ItemsSource="{Binding c1col}" IsReadOnly="True" AutoGenerateColumns="False">
                                <DataGrid.Columns>
                                    <DataGridTextColumn Binding="{Binding c2text}" />
                                    <DataGridTemplateColumn>
                                        <DataGridTemplateColumn.CellTemplate>
                                            <DataTemplate>
                                                <DataGrid Name="DataGrid3" ItemsSource="{Binding c2col}" IsReadOnly="True" AutoGenerateColumns="False">
                                                    <DataGrid.Columns>
                                                        <DataGridTextColumn Binding="{Binding c3text}" />
                                                        <DataGridTemplateColumn>
                                                            <DataGridTemplateColumn.CellTemplate>
                                                                <DataTemplate>
                                                                    <DataGrid Name="DataGrid4" ItemsSource="{Binding c3col}" IsReadOnly="True" AutoGenerateColumns="False">
                                                                        <DataGrid.Columns>
                                                                            <DataGridTextColumn Binding="{Binding c4text}" />
                                                                            <DataGridTemplateColumn>
                                                                                <DataGridTemplateColumn.CellTemplate>
                                                                                    <DataTemplate>
                                                                                        <DataGrid Name="DataGrid5" ItemsSource="{Binding c4col}" IsReadOnly="True" AutoGenerateColumns="False">
                                                                                            <DataGrid.Columns>
                                                                                                <DataGridTextColumn Binding="{Binding}" />
                                                                                            </DataGrid.Columns>
                                                                                        </DataGrid>
                                                                                    </DataTemplate>
                                                                                </DataGridTemplateColumn.CellTemplate>
                                                                            </DataGridTemplateColumn>
                                                                        </DataGrid.Columns>
                                                                    </DataGrid>
                                                                </DataTemplate>
                                                            </DataGridTemplateColumn.CellTemplate>
                                                        </DataGridTemplateColumn>
                                                    </DataGrid.Columns>
                                                </DataGrid>
                                            </DataTemplate>
                                        </DataGridTemplateColumn.CellTemplate>
                                    </DataGridTemplateColumn>
                                </DataGrid.Columns>
                            </DataGrid>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-28
      • 2014-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 2012-12-21
      相关资源
      最近更新 更多