我将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
,但这只是获取属性。
答案 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");
}
}