[英]Datagrid Column header setup
我有一个查询,它从加入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;
工作正常。 但是我的数据网格将这两列标记为“ 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"};
还是同样的错误.....知道我在这里应该做什么吗? 谢谢。
绑定必须是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>
使用匿名类型而不是元组可能也更好。 这样,绑定可能更有意义。
将MikeKulls的代码转换为C#:
myDataGrid.Columns.Add(new DataGridTextColumn {Header ="myHeader" Binding = new System.Windows.Data.Binding("Item1")});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.