Laden...

MVVM Datagrid und die Spalten

Erstellt von esven vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.517 Views
esven Themenstarter:in
40 Beiträge seit 2006
vor 11 Jahren
MVVM Datagrid und die Spalten

Hallo myCsharp-Gemeinde,

Ich probiere mich gerade an meiner ersten MVVM-Applikation.
Bisher klappt das auch ganz gut. Jetzt habe ich jedoch noch ein Problem, zu dem ich bisher keinen Ansatz finde.

Ich benutze das WPF DataGrid und muss eine dynamische Anzahl an Spalten darstellen. Das können mal 5 sein und mal 20. Für die Anzahl der Spalten und deren Header- usw. sind die Daten natürlich im ViewModel vorhanden.

Falls ihr versteht, was ich meine. Würde ich mich über ein paar Ideen wie Ihr das MVVM-Konform lösen würdet?!

Meine einzige Idee bisher wäre, die Columns-Eigenschaft an das ViewModel zu binden und dann die Columns im ViewModel zu erstellen. (Inkl. Binding-Eigenschaft usw.)
Würdet ihr das auch so machen oder stellt das nicht einen Bruch im MVVM-Pattern dar, da z.B. die DataGridTextColumn ja eigentlich ein View-Element darstellt, oder?

Vielen Dank und Grüße bereits im Voraus!
Sven

Cäsar machte das Lager voll und jeder stand stramm bei seinem Haufen.

I
57 Beiträge seit 2011
vor 11 Jahren

Kann man solche Daten nicht einfach in der Itemsource binden ?
Also Itemsource des Grids an z.b. den default view einer table im viewmodel binden.

5.299 Beiträge seit 2008
vor 11 Jahren

Ich benutze das WPF DataGrid und muss eine dynamische Anzahl an Spalten darstellen. Wie kommts dazu?
Normalerweise stellt ein DG viele Objekte desselben DatenTyps dar.
Nun kommts bei Datentypen ja nie vor, dass da auf einmal zusätzliche Properties entstehen würden, sodass man zusätzliche Spalten bräuchte.

Für Objekte verschiedenen Typs hingegen täte ich auch jeweils ein eigenes DG designen.

Der frühe Apfel fängt den Wurm.

esven Themenstarter:in
40 Beiträge seit 2006
vor 11 Jahren

Die Objekte, die ich anzeigen möchte sind auch immer Objekte desselben DatenTyps aber zB die "Parameter"-Objekte haben eine Liste von "Value"-Objekten. Jedes Value-Objekte soll in einer eigenen Spalte dargestellt werden. Es können aber je nach Konfiguration unterschiedlich viele Value-Objekte in den Parametern existieren.

So benötige ich unterschiedlich viele Spalten mit verschiedenen Beschriftungen, je nachdem welche Konfiguration der Nutzer lädt.

Cäsar machte das Lager voll und jeder stand stramm bei seinem Haufen.

5.299 Beiträge seit 2008
vor 11 Jahren

naja, die Value-Dinger sind untergeordnete Daten, die IMO nicht in derselben Tabelle wie die Parameter-Dinger angezeigt gehören.

stattdessen könntest einen ParentChildView creiern, bei dem im linken Grid die Parameter anzeigen, und im rechten Grid die Values des aktuell angewählten Parameters.

gugge vlt. 4ViewsWpf

Der frühe Apfel fängt den Wurm.