2009-04-29 70 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); 
    } 
}