如何将DataGrid添加到DataGridTemplateColumn.CellTemplate

时间:2012-10-07 06:14:26

标签: wpf wpfdatagrid datatemplate

我需要将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为null时,我们无法看到dataGrid,如图中第2行所示!

2 个答案:

答案 0 :(得分:2)

我怀疑这会奏效。您将获得InvalidOperationException - Items collection must be empty before using ItemsSource.,因为您正在为Intner Grid设置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>

答案 1 :(得分:1)

您可以将[{1}}与DataGrid一起使用,而不是ListView

GridView