在AutoGeneratingColumn中更改DataGrid列显示值

时间:2016-06-09 10:15:01

标签: c# wpf entity-framework datagrid

我将dataGrid.ItemsSource绑定到EntityItem列表Client,该列表包含另一个EntityItem,Company

当我的dataGrid显示时,在我的Company列中,我有我的对象类型(System.Data.Entity. ...)我希望显示我的Company.Name }。

在WindowsForm中,我可以这样做:

e.Value = ((Company)(dgv["Company", e.RowIndex].Value)).Name;

但我无法在WPF中找到合适的方法。

现在我有:

private void dataGridUsers_AutoGeneratingColumn_1(object sender, DataGridAutoGeneratingColumnEventArgs e)
    {

        DataGrid dgv = (DataGrid)sender;
        if (e.PropertyName == "Company")
        { 
            if (e.PropertyType == typeof(Company))
            {
                ...
            }
        }
    }

所以我可以确保我在正确的专栏上,但现在我卡住了,我不知道如何改变我希望列显示数据的方式...... 我试图调查e.PropertyDescriptor,但这只是获取属性。

1 个答案:

答案 0 :(得分:1)

DataGridAutoGeneratingColumnEventArgs对象具有Column属性,其中包含生成的DataGridColumn实例。具体类型为DataGridTextColumn,具有Binding属性。

您可以更改绑定路径以使用Column.Name属性

private void DataGridOnAutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
    if (e.PropertyName == "Company")
    {
        var c = (DataGridTextColumn)e.Column;
        var b = (Binding)c.Binding;
        b.Path = new PropertyPath("Company.Name");
    }
}