为DataGrid的特定列设置ItemTemplate

时间:2013-03-22 20:00:34

标签: wpf wpf-controls wpfdatagrid

我有一个WPF DataGrid,它绑定到List<Person> people

public class Person
{
    public string Name{get;set;}
    public string LastName{get;set;}
    public string Address{get;set;}
    public int Age{get;set;}
}

public void ShowPeople()
{
     myDataGrid.ItemsSource = people;
}

它显示一切正常,但我想在Address内的TextBox中显示DataGrid

我将XAML代码更改为:

   <DataGrid x:Name="myDataGrid">
        <DataGridTemplateColumn Header="Address">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBox Text="{Binding Path=Address}"/>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid>

这不起作用。它给了我一个错误。

  

在使用ItemsSource之前,项目集合必须为空。

请帮忙。 谢谢,

1 个答案:

答案 0 :(得分:5)

您缺少XAML中的Columns属性:

<DataGrid x:Name="myDataGrid">
    <DataGrid.Columns> <-- This is missing in your code!
        <DataGridTemplateColumn Header="Address">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBox Text="{Binding Path=Address}"/>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>