Ich möchte in einem Datagrid-Daten zeigen, wo die Daten sind eine Sammlung vonDatagrid: dynamische Datatemplate für dynamische Datagridtemplatecolumn
public class Thing
{
public string Foo { get; set; }
public string Bar { get; set; }
public List<Candidate> Candidates { get; set; }
}
public class Candidate
{
public string FirstName { get; set; }
public string LastName { get; set; }
...
}
, wo die Zahl der Bewerber in Kandidatenliste zur Laufzeit variiert.
Wunsch Raster-Layout wie folgt aussieht
Foo | Bar | Candidate 1 | Candidate 2 | ... | Candidate N
Ich möchte eine DataTemplate
für jeden Candidate haben wie ich es während der Laufzeit planen zu ändern - Benutzer wählen können, welche Informationen über Kandidaten in verschiedenen Spalten angezeigt (Kandidat ist nur ein Beispiel, ich habe ein anderes Objekt). Das bedeutet, dass ich auch die Spaltenvorlagen in der Laufzeit ändern möchte, obwohl dies durch eine große Vorlage und das Zusammenlegen der Teile erreicht werden kann.
Ich kenne zwei Möglichkeiten, wie meine Ziele zu erreichen (beide ziemlich ähnlich):
- Verwenden
AutoGeneratingColumn
Ereignis und erstellen Kandidaten Spalten - Spalten hinzufügen manuell
In beiden Fällen Ich muss die DataTemplate
von String mit XamlReader
laden. Zuvor muss ich die Zeichenfolge bearbeiten, um die Bindung zu ändern, die gewünschte Candidate.
Gibt es eine bessere Möglichkeit, ein DataGrid mit unbekannter Nummer von DataGridTemplateColumn zu erstellen?
Hinweis: Diese Frage auf dynamic datatemplate with valueconverter
bearbeiten basiert: Da ich sowohl WPF und Silverlight unterstützen müssen, ich habe meine eigene DataGrid
Komponente geschaffen, die DependencyProperty
für Bindig eine Sammlung von Spalten . Wenn sich die Sammlung ändert, aktualisiere ich die Spalten.
Haben Sie jemals eine Lösung oder Antwort für dieses Problem bekommen? –
Nicht wirklich. Wie ich geschrieben habe, bin ich mit dem benutzerdefinierten 'DataGrid'-Steuerelement gelandet. Aber ich denke darüber nach, ein benutzerdefiniertes Steuerelement zu entwickeln, das nur auf einem 'Grid' basiert, da' DataGrid' ziemlich schwer für meine Aufgabe ist. –