为DataGrid的特定列设置ItemTemplate

3

我有一个 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;
}

一切都显示得很好,但我想在 DataGrid 中的 TextBox 中显示 Address

我将 XAML 代码更改为以下内容:

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

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

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

请帮忙解决。 谢谢。

1个回答

7

你的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>

1
在代码后台做什么?创建整个“DataGrid”而不是使用XAML? - Peter Hansen
将ItemTemplate设置为列。 - wpf_starter
对不起,我不知道。也许你应该发布一个新的问题。其他人可能会知道 :) - Peter Hansen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接