1

我需要将DataGrid添加到DataGridTempateColumn,所以我这样做了,但是它不能正常工作,我不知道我是否真的可以将DataGrid添加到DataGridTempateColumn?

<datagrid>
....
<DataGridTemplateColumn.CellTemplate>
     <DataTemplate>
        <DataGrid HeadersVisibility="None" AutoGenerateColumns="False" CanUserAddRows="True"                    ItemsSource="{Binding ProjectCollection}">
                                <DataGridTextColumn Binding="{Binding Spec.Rev}" Width="*"></DataGridTextColumn>
                                <DataGridTextColumn  Binding="{Binding Spec}" Width="*"></DataGridTextColumn>

        </DataGrid>
     </DataTemplate>
 </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
...
</DataGrid>

已编辑:当 ProjectCollection 为空时,我们看不到 dataGrid,正如您在图片中的第 2 行中看到的那样!

4

2 回答 2

2

我怀疑这会奏效。您将得到InvalidOperationException-Items collection must be empty before using ItemsSource.因为您正在为内部网格设置 ItemsSource,同时您正在将子项添加到 DataGrid。

像这样将列添加到 dataGrid 的 Columns DP 中,它将按您的需要工作 -

<DataGridTemplateColumn.CellTemplate>
     <DataTemplate>
        <DataGrid HeadersVisibility="None" AutoGenerateColumns="False"
                 CanUserAddRows="True" ItemsSource="{Binding ProjectCollection}">
           <DataGrid.Columns>
               <DataGridTextColumn Binding="{Binding Spec.Rev}" Width="*"/>
               <DataGridTextColumn  Binding="{Binding Spec}" Width="*"/>
           </DataGrid.Columns>
        </DataGrid>
     </DataTemplate>
</DataGridTemplateColumn.CellTemplate>
于 2012-10-07T08:23:18.130 回答
1

DataGrid您可以使用ListViewwith view而不是使用GridView

<DataGridTemplateColumn Header="Complex Data">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>                    
                        <ListView ItemsSource="{Binding ProjectCollection}">
                            <ListView.View>
                                <GridView>
                                    <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" />
                                    <GridViewColumn Header="Date" DisplayMemberBinding="{Binding Date}" />
                                </GridView>
                            </ListView.View>
                        </ListView>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
于 2012-10-07T07:57:04.313 回答