2012-07-13 102 views
0

我從加入2個實體下返回兩列的查詢:DataGrid列頭設置

var myQ = myDataContext1.Entity1.Join(myDataContext1.Entity2, a=>a.id, b=>b.id, (a, b)=> new Tuple<int, float>(a.id, b.something)).ToList(); 
MyDatagrid.ItemSources = myQ; 

它工作得很好。但我的數據網格將2列標記爲'item1'和'item2'。我試圖將它們改爲正確的名稱。到目前爲止,我做不到。我試圖使用:

MyDatagrid.Columns.Add(new DataGridTextColumns{ Header = "Aheader", Binding= new System.Windows.Data.Binding("a.id"); 

所有的數據都會消失,因爲綁定名稱必須是錯誤的。但我不知道我應該把下面的綁定... 然後,我試過

MyDataGrid.Columns[0].Header = "myID"

它不工作,和一切有列集合中沒有列時間告訴我。所以我覺得在DataGrid裝入添加一個事件後,必須發生在頭部的變化:

MyDataGrid.loaded += (o, e) =>{MyDataGrid.Columns[0].Header = "myID"}; 

還是同樣的錯誤.....任何想法,我應該在這裏做什麼?謝謝。

回答

1

綁定需要是Item1和Item2。您還應該將AutoGenerateColumns設置爲false,並且最好在XAML中定義列。例如

<DataGrid AutoGenerateColumns="False"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{Binding Path=Item1}" Header="Header 1"></DataGridTextColumn> 
     <DataGridTextColumn Binding="{Binding Path=Item2}" Header="Header 2"></DataGridTextColumn> 
    </DataGrid.Columns> 
</DataGrid> 

您可能最好使用匿名類型而不是元組。這樣的綁定可能會更有意義。

+0

感謝。我將它轉換爲C#,如下所示:myDataGrid.Columns.Add(new DataGridTextColumn {Header =「myHeader」Binding = new System.Windows.Data.Binding(「Item1」)}); – NewDTinStackoverflow 2012-07-13 15:51:06

0

轉換MikeKulls'代碼到C#:

myDataGrid.Columns.Add(new DataGridTextColumn {Header ="myHeader" Binding = new System.Windows.Data.Binding("Item1")});

相關問題