2009-04-29 3 views
1

Ich entwickle eine WPF-Benutzersteuerung für die Anzeige von Teilen von XML-Dateien. Ich versuche, das Benutzersteuerelement flexibel zu machen, damit ich die Spaltenüberschriften und Felddatenbindungen von außerhalb des Steuerelements zuweisen kann.Wpf DataGrid: Ändern der XML-Feldbindung zur Laufzeit

Ich habe festgestellt, dass ich einfach die Spaltenüberschriften ändern können, aber während der folgenden Code Versprechen zu haben schien, hat SertMemberPath nicht das Feld

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; 
    } 
} 

Antwort

1

Nach etwas mehr ich found this question and answer by @Generic_Error on SO Bindung ändern. Ich habe seinen Code leicht modifiziert und hier ist, was ich mir ausgedacht habe, was ich weiter anpassen kann.

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); 
    } 
}