2009-04-29 65 views
1

我正在开发一个WPF用户控件以显示部分XML文件。我试图使用户控件灵活,以便我可以从控件的外部分配列标题和字段数据绑定。Wpf DataGrid:在运行时更改XML字段绑定

我发现我可以很容易地更改列标题,但在下面的代码似乎有希望,SertMemberPath不改变该领域结合

public void ChangeColumnDefinitions (List<XmlGridColumnDefinition> columns) 
{ 
    int columnnum = 0; 

    foreach (XmlGridColumnDefinition column in columns) 
    { 
     this.datagrid.Columns[columnnum].Header = column.Heading; 
     this.datagrid.Columns[columnnum].SortMemberPath = string.Format ("Element[{0}].Value", column.FieldName); 
      ++columnnum; 
    } 
} 

回答

1

四处寻找更我found this question and answer by @Generic_Error on SO后。我稍微修改了他的代码,这是我想到的,我可以进一步自定义。

public void ChangeColumnDefinitions (IEnumerable<XmlGridColumnDefinition> columns) 
{ 
    this.datagrid.Columns.Clear(); 

    foreach (var column in columns) 
    { 
      DataGridTextColumn coldef = new DataGridTextColumn 
      { 
        Header = column.Heading, 
        Binding = new Binding (string.Format ("Element[{0}].Value", column.FieldName)) 
      }; 

      this.datagrid.Columns.Add (coldef); 
    } 
}