2012-07-13 100 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")});

相关问题