Hallo an die VB-Gemeinde.
Ich habe seit einiger Zeit MVVM für mich entdeckt und riesen Freude am Programmieren (wieder)entwickelt.
Nun bin ich an einem Projekt dran, wo sich MVVM zunächst als "die Lösung" präsentierte, mittlerweile aber ein paar Probleme aufgeworfen hat.
Ausgangslage:
Ich habe eine UI (View) ein ViewModel (ViewModel) welches dynamisch Objecte erzeugt (Models) diese stellen Lasersysteme dar.
Da die Systeme mehrere verschiedene Parameter besitzen und diese sich auch signifikant von einander unterscheiden können, habe ich hier etwas viele Klassen aufgebaut.
Parameter
von diesem erben die SerialParameter und die UsbParamete, da eine Anlage sowohl über Serielle wie auch USB angesprochen/angeschlossen werden kann. Die zuvor erwähnten "dynamischen Objecte" nenne ich LaserSystems und diese besitz je nach Analge eine n Anzahl von Parametern und je nach Anlage sind es SerialParameter oder UsbParameter.
Soweit so kompliziert.
Problem:
Die Idee wäre ja beim Start der Applikation, dass diese nach den Anlagen sucht und bei Vorhandensein, eben jene Objecte passend zur Anlage erzeugt und in einer List aufführt. Wählt nun der Anwender eines der Anlagen aus, wird die UI entsprechend angepasst (nur einzelne Controls die weg müssen oder wieder angezeigt werden).
Ein "runtimeListener" arbeitet in einem eigenen Thread und stellt die Kommunikation zwischen Applikation und Anlage her.
Dieser hat eine liste von Parametern die es immer abfragt und eine taskliste, die der Benutzer durch Interaktion mit dem GUI befüllt.
Hier noch ein Versuch es shematisch dazustellen:
Bisher hatte ich im ViewModel Eigenschaften die eine Binding-Beziehung zum View hatten und durch aufruf der Funktionen im Model und deren Rückgabewert diese Eigenschaften gesetzte. Die Setzung neuer Werte rufte den PropertyChangedEventHandler auf den Plan und so wurde das UI auch aktuell gehalten.
Jetzt habe ich vieles davon auf das LaserSystem aufgebaut. Dort wird festgestellt welche Parameter welchen Wert hat, dort arbeitet der RuntimeListener im Hintergrund und gibt Werte aus. Nun stehe ich davor und habe überhaupt keinen Plan wie ich die Werte einigermassen schlau zu den Eigenschaften im ViewModel bringe.
Falls es da keine gute Möglichkeit dafür gibt, bin ich auch bereit alles umzubauen.
Bin also wirklich für jeden Vorschlag offen.
Danke an alle die sich die Zeit nehmen
Ich habe seit einiger Zeit MVVM für mich entdeckt und riesen Freude am Programmieren (wieder)entwickelt.
Nun bin ich an einem Projekt dran, wo sich MVVM zunächst als "die Lösung" präsentierte, mittlerweile aber ein paar Probleme aufgeworfen hat.
Ausgangslage:
Ich habe eine UI (View) ein ViewModel (ViewModel) welches dynamisch Objecte erzeugt (Models) diese stellen Lasersysteme dar.
Da die Systeme mehrere verschiedene Parameter besitzen und diese sich auch signifikant von einander unterscheiden können, habe ich hier etwas viele Klassen aufgebaut.
Parameter
von diesem erben die SerialParameter und die UsbParamete, da eine Anlage sowohl über Serielle wie auch USB angesprochen/angeschlossen werden kann. Die zuvor erwähnten "dynamischen Objecte" nenne ich LaserSystems und diese besitz je nach Analge eine n Anzahl von Parametern und je nach Anlage sind es SerialParameter oder UsbParameter.
Soweit so kompliziert.
Problem:
Die Idee wäre ja beim Start der Applikation, dass diese nach den Anlagen sucht und bei Vorhandensein, eben jene Objecte passend zur Anlage erzeugt und in einer List aufführt. Wählt nun der Anwender eines der Anlagen aus, wird die UI entsprechend angepasst (nur einzelne Controls die weg müssen oder wieder angezeigt werden).
Ein "runtimeListener" arbeitet in einem eigenen Thread und stellt die Kommunikation zwischen Applikation und Anlage her.
Dieser hat eine liste von Parametern die es immer abfragt und eine taskliste, die der Benutzer durch Interaktion mit dem GUI befüllt.
Hier noch ein Versuch es shematisch dazustellen:
Bisher hatte ich im ViewModel Eigenschaften die eine Binding-Beziehung zum View hatten und durch aufruf der Funktionen im Model und deren Rückgabewert diese Eigenschaften gesetzte. Die Setzung neuer Werte rufte den PropertyChangedEventHandler auf den Plan und so wurde das UI auch aktuell gehalten.
Jetzt habe ich vieles davon auf das LaserSystem aufgebaut. Dort wird festgestellt welche Parameter welchen Wert hat, dort arbeitet der RuntimeListener im Hintergrund und gibt Werte aus. Nun stehe ich davor und habe überhaupt keinen Plan wie ich die Werte einigermassen schlau zu den Eigenschaften im ViewModel bringe.
Falls es da keine gute Möglichkeit dafür gibt, bin ich auch bereit alles umzubauen.
Bin also wirklich für jeden Vorschlag offen.
Danke an alle die sich die Zeit nehmen