我有一个查询,它从加入2个实体返回2列,如下所示:
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;
工作得很好。但我的datagrid将2列标记为'item1'和'item2'。我试图将它们更改为正确的名称。到目前为止我无法做到。我试着用:
MyDatagrid.Columns.Add(new DataGridTextColumns{ Header = "Aheader", Binding= new System.Windows.Data.Binding("a.id");
所有数据都会消失,因为绑定名称必须是错误的。但是我不知道在绑定后我应该放什么... 然后,我试过
MyDataGrid.Columns[0].Header = "myID"
它不起作用,并告诉我每次列集合中没有列。所以我认为标题的更改必须在加载数据网格并添加事件后发生:
MyDataGrid.loaded += (o, e) =>{MyDataGrid.Columns[0].Header = "myID"};
仍然是同样的错误.....任何想法我应该在这做什么?感谢。
答案 0 :(得分: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>
使用匿名类型而不是元组也可能会更好。这样,绑定可能更有意义。
答案 1 :(得分:0)
将MikeKulls的代码转换为C#:
myDataGrid.Columns.Add(new DataGridTextColumn {Header ="myHeader" Binding = new System.Windows.Data.Binding("Item1")});