繁体   English   中英

Datagrid列标题设置

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM