2016-06-09 71 views
0

我已將dataGrid.ItemsSource綁定到EntityItem的列表Client,後者包含另一個EntityItem,Company在AutoGeneratingColumn中更改DataGrid列顯示值

當顯示我的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

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"); 
    } 
}