【问题标题】:Datagrid Column header setupDatagrid 列标题设置
【发布时间】:2012-07-13 01:06:17
【问题描述】:

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

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

【问题讨论】:

    标签: wpf silverlight datagrid wpfdatagrid advanceddatagrid


    【解决方案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>
    

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

    【讨论】:

    • 谢谢。我将它转换为 C#,如下所示,它起作用了: myDataGrid.Columns.Add(new DataGridTextColumn {Header ="myHeader" Binding = new System.Windows.Data.Binding("Item1")});
    【解决方案2】:

    将 MikeKulls 的代码转换为 C#:

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

    【讨论】:

      猜你喜欢
      • 2010-12-19
      • 2012-01-25
      • 2010-09-14
      • 1970-01-01
      • 2012-02-02
      • 2011-05-04
      • 2014-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多