AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MVVM in der Realität

Ein Thema von Union · begonnen am 8. Sep 2013 · letzter Beitrag vom 10. Jun 2015
Antwort Antwort
Seite 5 von 7   « Erste     345 67      
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#41

AW: MVVM in der Realität

  Alt 7. Jun 2015, 16:50
Und wie kommen die Eigenschaften, die sich im VM geändert haben, wieder in die View?
Das VM lösst ein Property Change Multicast Event aus und alle Views die auf das Feld/Record/ViewGruppe hören aktualisieren sich...
Ok, und wer hat diesen Notification Mechanismus initialisiert? Ich vermute in deiner View gibts irgendwo nen Batzen an Createbinding Aufrufen oder so? Lass dir doch nich alles aus der Nase ziehen, ich denke du machst schon MVVM, dann zeig doch mal nen Beispiel
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.643 Beiträge
 
Delphi 11 Alexandria
 
#42

AW: MVVM in der Realität

  Alt 8. Jun 2015, 17:09
schon genial gemacht. Ich habe auch lieber alles in der Code-Datei, anstatt alles im Formular reingebastelt. z.B. 3th-party Komponenten binde ich generell nicht in die IDE ein und erzeuge die lieber per Code.

@Stevie könnte man dein Beispiel auch um den VirtualStringTree erweitern?
Sven Harazim
--
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#43

AW: MVVM in der Realität

  Alt 8. Jun 2015, 17:37
Stevie plant ja für dieses Jahr, die MVVM Implementierung in DSHARP zu aktualisieren/weiterentwickeln und es gibt hier ja auch Freiwillige im Forum, die ihm helfen wollen.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#44

AW: MVVM in der Realität

  Alt 8. Jun 2015, 18:21
schon genial gemacht. Ich habe auch lieber alles in der Code-Datei, anstatt alles im Formular reingebastelt. z.B. 3th-party Komponenten binde ich generell nicht in die IDE ein und erzeuge die lieber per Code.

@Stevie könnte man dein Beispiel auch um den VirtualStringTree erweitern?
Ich hab noch eine andere Möglichkeit eingebaut für die, die Attribute nicht so mögen, indem man dann im Code einfach Bind(...) aufruft. Außerdem verhält sich die IDE etwas nickelig, wenn man ein Control löscht, denn dann bleibt das Attribut in der Luft hängen - doof.

Für den VST würde ich den DSharp TreeviewPresenter benutzen, dem man dann wunderbar eine Liste von Objekten geben kann und auf SelectedItem binden kann.

Stevie plant ja für dieses Jahr, die MVVM Implementierung in DSHARP zu aktualisieren/weiterentwickeln und es gibt hier ja auch Freiwillige im Forum, die ihm helfen wollen.
Genau deshalb hab ich den Prototypen geschrieben, um schonmal Feedback zu sammeln.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#45

AW: MVVM in der Realität

  Alt 9. Jun 2015, 10:04
Schaut auf jeden Fall eleganter aus, als das, was ich gebaut habe. Die Attribute finde ich gut, aber das Problem wird halt sein, dass die IDE im Designer damit nicht sonderlich gut klar kommen wird. Wir verwenden die meiste Zeit Konventionen als Binding. Sprich hat das Control den gleichen Namen wie eine Property des BindingContext, dann binde da automatisch dran. Und je nachdem was es für ein Control ist, wird halt gegen eine andere Standard-Eigenschaft gebunden.

Was ich noch anregen würde, wäre den Zugriff auf die Werte gegen die gebunden wird zu abstrahieren. In unseren Legacy-Anwendungen haben wir Getter/Setter statt Properties. Ich müsste also eine Zwischenschicht einziehen können, die wahlweise mit einer Instanz, die aus Properties liest oder eben mit einer, die die Getter/Setter verwendet, arbeiten kann.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#46

AW: MVVM in der Realität

  Alt 9. Jun 2015, 12:49
Der Weg erscheint mir ehrlich gesagt (potenziell) stabiler und einfacher als der von Stevie.

Wenn man ein Control löscht gibt es eben nichts mehr, was dort irgendwas daran zu binden versucht. Im Fall von Attributen scheint es ja Probleme zu geben und wenn man Bindings im Quelltext definiert ist die GUI ja auch vom Quelltext abhängig.

Kannst Du mal kurz skizzieren, wie Ihr die Aktualisierungswege in beiden Richtungen realisiert?
- Eingabe im Edit ändert den Wert in der Datenschicht (evtl. nach Validierung)
- Änderung von Daten durch Logik informiert Edit zwecks Neuzeichnung (müsst Ihr da z.B. Nachrichten in Settern versenden?)

Die Frage ist ja entscheidend, wie komfortabel das Framework zu nutzen ist.

So wie ich Dich bisher verstanden habe liegt Eure Lösung etwa auf meiner Schiene. Allerdings wäre natürlich eine Bindung an variable Controls und Controleigenschaften sinnvoll.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli ( 9. Jun 2015 um 12:58 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#47

AW: MVVM in der Realität

  Alt 9. Jun 2015, 13:32
Der Weg erscheint mir ehrlich gesagt (potenziell) stabiler und einfacher als der von Stevie.
Attribute sind einer von vielen Wegen. Du kannst auch in deinem FormCreate die ganzen Bind(...) Aufrufe tätigen wie ich oben doch bereits schrieb.

Und CoC birgt andere Hürden. Zum Beispiel wüsst ich gerne, wie man über die Benamung einer Combobox diese mit Objekten und deren Namen plus einem Caption ('Bitte wählen sie was aus') befüllt wenn im VM nur eine Property mit einer Liste dieser Items ist. Wo hinterleg ich die Info, dass der Anzeigetext der Name ist und ich dieses Zusatzelement als erstes habe, was "keine Auswahl" repräsentiert. Ins VM gehört diese Info mMn nämlich nicht.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#48

AW: MVVM in der Realität

  Alt 9. Jun 2015, 13:50
Aus meiner Sicht gehören diese Infos (Vorgaben) optimaler Weise direkt in die Controleigenschaften. Also z.B. eine Eigenschaft: EmptyString = "hier Text eingeben".

Für andere Zwecke kann man z.B. global Zuordnungslisten ablegen, die das Framework dann benutzen kann.
Z.B. für einen Aufzählungstyp TSex = (sxMale, sxFemale) könnte man global Strings hinterlegen:
NIL="bitte wählen Sie aus"
sxMale="männlich'
sxFemale="weiblich"

Dann kann das Framework erkennen was welche Texte es z.B. in einer Combobox anbieten muss, wenn sie an ein Feld vom Typ TSex gebunden ist.
Auch das Schreiben des ausgewählten Wertes kann das Framework dann über die hinterlegte Tabelle vornehmen.

Mit den Standardcontrols ist das natürlich schwer zu realisieren. Aber man kann sich diese ganzen ViewModels, Controller und Registrierungen sparen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli ( 9. Jun 2015 um 14:05 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#49

AW: MVVM in der Realität

  Alt 9. Jun 2015, 14:00
@Stevie

Wenn es eine Auswahlmöglichkeit gibt, die besagt, dass aktuell nichts ausgewählt ist, dann gibt das das ViewModel vor. Die View stellt nur das Control und die statische Beschriftung.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#50

AW: MVVM in der Realität

  Alt 9. Jun 2015, 14:38
@Stevie

Wenn es eine Auswahlmöglichkeit gibt, die besagt, dass aktuell nichts ausgewählt ist, dann gibt das das ViewModel vor. Die View stellt nur das Control und die statische Beschriftung.
Würdest du dann nil (oder ein Null-Object) in die Liste der Möglichkeiten aufnehmen? Find ich eher suboptimal. Dass nil eine Auswahlmöglichkeit ist, ergibt sich ja aus der "ausgewähltes Element" Eigenschaft.

Aus meiner Sicht gehören diese Infos (Vorgaben) optimaler Weise direkt in die Controleigenschaften. Also z.B. eine Eigenschaft: EmptyString = "hier Text eingeben".
Diese Eigenschaft gibt es aber nicht in einer TCombobox - außerdem wäre ich dann wieder im OI unterwegs, um irgendwelche Binding relevanten Dinge einzustellen. Und das wollt ich eher vermeiden bei dem Ansatz - ich will kein RAD-MVVM.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie ( 9. Jun 2015 um 14:46 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 7   « Erste     345 67      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz