2009-07-22 5 views
0

Ich implementiere das WPF DataGrid (sehr neu zu WPF). Ich folgte Tutorials, die zeigten, wie man die ComboBoxColumn mit statischen Ressourcen binden kann. Die Datenbindung für einige Spalten in meinem Datagrid wird jedoch erst zur Laufzeit bekannt sein.WPF-Toolkit - Datagrid - ComboboxColumn-Bindung mit DynamicResource

Aus diesem Grund kann ich sie nicht mit der statischen Ressource binden. Gibt es eine andere Möglichkeit, die ComboBoxColumn s in einer DataGrid zu speichern? In ASP.NET weiß ich, dass wir den rowdatabound-Code haben, wo wir das tun und den Inhalt der Spalten dynamisch erstellen können. In WPF sieht es jedoch so aus, als ob alles durch Ressourcen erfolgt.

Wie können Sie mithilfe dynamischer Ressourcen im DataGrid Datenbindungen erstellen?

Danke!

Antwort

0

Sie können Bindungen dynamisch einrichten. In etwa so (dieser Code erstellt Rasteransichtsspalten und weist dynamische Bindungen zu)

 private void AddColumn(GridView view, Field fld) 
     { 
      GridViewColumn col = new GridViewColumn(); 
      col.Header = fld.Label; 
      Binding bnd = new Binding(); 
      switch (fld.FieldType) 
      { 
       case FieldType.DateTime: 
       bnd.Converter = new DateTimeToDateStringConverter(); 
       break; 
// or some other converters 
      } 
      bnd.Path = new PropertyPath(string.Format("Fields[{0}]", 
    _table._fields.IndexOf(fld))); // the string matches what you would use in XAML 
      col.DisplayMemberBinding = bnd; 
      view.Columns.Add(col); 
     }