AGB  ·  Datenschutz  ·  Impressum  







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

Livebinding einer FMX TListView an TStrings

Ein Thema von QuickAndDirty · begonnen am 20. Mai 2015 · letzter Beitrag vom 22. Mai 2015
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#11

AW: Livebinding einer FMX TListView an TStrings

  Alt 20. Mai 2015, 16:25
Mußte man der BindingSource nicht eh ein TList<T> reingeben?
Da geht TString/TStringList natürlich nicht (TList<string> ist ja was Anderes)
$2B or not $2B
  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
 
#12

AW: Livebinding einer FMX TListView an TStrings

  Alt 20. Mai 2015, 16:35
Nun die Frage ist, warum du überhaupt eine StringList da binden willst.

Eigentlich wird über das LB an ein ListControl eine Liste mit Objekten gebunden und eben keine StringList.
Währe also TObjectList<TMyFunObject> plus TBindadapterBindSource plus TDatageneratorAdapter richtig?

Und das TStrings nicht gehen dürfen ist für dich offensichtlich?
Für schnell gemacht kannst du ein TPrototypeBindSource auf die Form klatschen und im TPrototypeBindSource.OnCreateAdapter
Delphi-Quellcode:
procedure TForm1.PrototypeBindSource1CreateAdapter( Sender: TObject; var ABindSourceAdapter: TBindSourceAdapter );
begin
  FItems := TObjectList<TListViewItemViewModel>.Create;
  ABindSourceAdapter := TListBindSourceAdapter<TListViewItemViewModel>.Create( Self, FItems, True );
end;
In dem TPrototypeBindSource kannst/musst du noch die Felder definieren, die dann auf die Objekt-Eigenschaften der Objekte in der Liste gemappt werden ...

Selbst wenn das mit der StringList gehen würde, würde ich das nicht nehmen wollen, denn dann müsste ich ja von dem String wieder auf den Kontext kommen.
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
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#13

AW: Livebinding einer FMX TListView an TStrings

  Alt 20. Mai 2015, 16:53
OK, Ich versuche das mal.
Sind meine ersten MVVM, livebinding und FMX Gehversuche.

Werde Jubel posten wenn es klappt.
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (20. Mai 2015 um 16:59 Uhr)
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#14

AW: Livebinding einer FMX TListView an TStrings

  Alt 21. Mai 2015, 13:38
Was kann man machen, wenn das Binding erfolgt bevor die Quelle erzeugt wurde?
Ich möchte nicht das die View die DatenObjecte des ViewModells besitzt.

Zur Zeit erstelle ich in der View das ViewModel und im ViewModel das Model.

Sollte ich das lieber von "außen" erstellen und verdrahten?


Ich habe es jetzt wie folgt gelöst.
Delphi-Quellcode:
constructor TView.Create(AOwner: TComponent);
begin
  fViewModel := TViewModel.create;
  inherited;
end;
Müsste sicher sein da das ViewModel ja eh nichts vom View weiß.

UND wenn das ok ist dann

HEUREKA. Das Livebinding klappt.

Natürlich bleibt ein Wehrmutstropfen:
An sich sollte ich ja im ViewModel keine Rücksicht nehmen müssen was für typen FMX binden kann und welche nicht. Schließlich möchte ich das ViewModel im zweifel an ein Audio basiertes View koppeln können usw. da sollte die art der View dem ViewModel doch eigentlich egal sein. So muss ich Rücksicht nehmen auf die Komponenten die auf der View liegen ob wohl sie im ViewModel offiziell gar nicht bekannt sind...
Kann auch sein das ich die Idee von MVVM falsch verstehe. Ich dachte hier ginge die Entkopplung wesentlich weiter als bei MVP...
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (21. Mai 2015 um 14:04 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
 
#15

AW: Livebinding einer FMX TListView an TStrings

  Alt 21. Mai 2015, 14:25
Beim MVVM gibt es View-First und ViewModel-First.

Da muss man sich entscheiden, welchen Ansatz man möchte.

Beim ViewModel-First braucht die View eine Kontext-Eigenschaft, wo man der View dann das ViewModel übergeben kann.

Und du brauchst auch keine Rücksicht auf die FMX-Typen nehmen, denn du kannst beim LB auch Konverter registrieren. Dann hat man z.B. einen TStream_to_TBitmap-Konverter
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
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#16

AW: Livebinding einer FMX TListView an TStrings

  Alt 21. Mai 2015, 16:15
Da meine View eine ViewModel Eigenschaft hat verfolge ich einen ViewModel first Ansatz?

Wer erzeugt denn dann wen?

Ich hatte das aus diesem Video von nick hodges, dem hab ich entnommen:
View erzeugt und besitzt ViewModel erzeugt und besitzt Model.
Und keiner kennt seinen Erzeuger.

Ist das soweit richtig?
Wie machst du es ?
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (21. Mai 2015 um 16:17 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
 
#17

AW: Livebinding einer FMX TListView an TStrings

  Alt 21. Mai 2015, 22:14
View-First: Die View erzeugt das ViewModel selber (erst die View und dann das ViewModel)
ViewModel-First: Das ViewModel wird erzeugt und dann der passenden View übergeben (die wird erzeugt oder wiederverwendet)

Das Video von Nick zeigt MVVMchen-Klein - das kann man nicht wirklich für voll nehmen.

Wenn du was zu MVVM sehen möchtest, dann musst du dich mal in Richtung WPF umschauen, dort gibt es jede Menge, denn dort ist das eigentlich Pflichtprogramm.
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
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#18

AW: Livebinding einer FMX TListView an TStrings

  Alt 22. Mai 2015, 09:39
Ich hab mich dazu gestern schlau gemacht...

Im Prinnzip ist es so das MVVM in WPF gut funktioniert wenn man nur eine View und nur ein ViewModel hat...
Alle haben probleme eine navigation über mehrere Views damit umzusetzen und entwickeln dazu diverse krücken.


Für ViewModel First brauche ich eine Entität die von außen View und ViewModel verheiratet.
Beim Navigieren über mehrere Views hat man aber immer noch das selbe problem.

Ich denke ich versuche diesen Ansatz dazu
http://dotneteers.net/blogs/vbandi/a...-approach.aspx
Der arbeitet mit Namenskonventionen zur Verknüpfung des ViewModels mit der View in der "falschen" Richtung...man könnte wohl auch interfaces benutzen . Und einen Globalen Kontext. Quasi C[MVVM]

Für Delphi gibt es kein MVVM mit ViewModel First oder mit View First der by the book verwendbar ist.
Und sogar in WPF fehlt die lehrbuchgerechte Umsetzung/Umsetbarkeit dieser beiden Ansätze von MVVM mit mehreren Views.

Warum gibt es das nicht?
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (22. Mai 2015 um 09:46 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Livebinding einer FMX TListView an TStrings

  Alt 22. Mai 2015, 09:54
http://delphisorcery.blogspot.de/201...er-dsharp.html
Markus Kinzler
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#20

AW: Livebinding einer FMX TListView an TStrings

  Alt 22. Mai 2015, 10:54
Ja das ist gut, MKinzler.
Ich versuche es nur eben möglichst mit Bordmitteln hinzubekommen.

Wozu hat Delphi Bindings wenn es keine vernünftige Umsetzbarkeit für MVVM mit mehreren Views gibt?
Eigentlich müsste doch all das Teil des FMX Frameworks sein.
Ich hab Delphi XE 8 vorliegen... vielleicht haben die da noch einen Schatz vergraben den es zu heben gilt ?
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 12:45 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