0

我有一个查询,它从加入 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");

所有数据都会消失,因为绑定名称一定是错误的。但我不知道我应该在 Binding 之后放什么......然后,我尝试了

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

它不起作用,并且每次都告诉我列集合中没有列。所以我认为标题的更改必须在加载数据网格并添加事件之后发生:

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

仍然是同样的错误.....知道我应该在这里做什么吗?谢谢。

4

2 回答 2

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>

使用匿名类型而不是元组可能会更好。这样绑定可能更有意义。

于 2012-07-13T01:17:37.913 回答
0

将 MikeKulls 的代码转换为 C#:

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

于 2012-07-13T15:55:41.077 回答