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.
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.
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.
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.
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.