Laden...

Spalten und Zeilen dynamisch zu ListView hinzufügen

Erstellt von andski vor 10 Jahren Letzter Beitrag vor 10 Jahren 2.195 Views
A
andski Themenstarter:in
9 Beiträge seit 2013
vor 10 Jahren
Spalten und Zeilen dynamisch zu ListView hinzufügen

Hallo,

ich habe eine ListView mit GridView. Diese hat schon 10 Spalten. Nun möchte zur Laufzeit eine neue (11.) Spalte zur GridView hinzufügen. Wenn ich anschließend eine neue Zeile einfüge, soll natürlich auch die Zelle der neuen Spalte belegt werden können.

Soweit ich das verstanden habe muss ich der ListView eine ObservableCollection (zumindest etwas, was INotifyCollectionChanged implementiert) als ItemSource angeben. Zur ObservableCollection können dann Items hinzugefügt werden, bspw. mittels eines anonymen Objekts:

observableCollection.Add(new {Name = "A", Val = "B"});

Das ganze lässt sich auch über eine Klasse, die Properties definiert, bewerkstelligen.

Der Knackpunkt ist aber der gleiche: zur Laufzeit lassen sich weder dem anonymen Objekt, nach zur Klasse dynamisch Eigenschaften hinzufügen.

Gibt es einen Weg, sowas zu machen?

A
andski Themenstarter:in
9 Beiträge seit 2013
vor 10 Jahren

Um meine Frage mal selbst zu beantworten:

Wonach ich gesucht habe, wird hier beschrieben. Dort wird eine eigene dictionary-Klasse erstellt, die von INotifyPropertyChanged abgeleitet wird und beim Hinzufügen, Löschen oder Ändern von Einträgen ein PropertyChangedEvent auslöst.

Man kann dann die Zeilendaten als normale Einträge zu diesem Dictionary hinzufügen und packt das gefüllt Dictionary dann in eine ObservableCollection, die an ein DataGrid o.ä. gebunden ist.

Zur Laufzeit lassen sich somit beliebig hinzugefügte Spalten mit Daten füllen.