Datagrid列标题设置

时间:2012-07-13 01:06:17

标签: wpf silverlight datagrid wpfdatagrid advanceddatagrid

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

仍然是同样的错误.....任何想法我应该在这做什么?感谢。

2 个答案:

答案 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")});