![]() |
AW: Livebinding einer FMX TListView an TStrings
Mußte man der BindingSource nicht eh ein TList<T> reingeben?
Da geht TString/TStringList natürlich nicht (TList<string> ist ja was Anderes) |
AW: Livebinding einer FMX TListView an TStrings
Zitat:
Delphi-Quellcode:
auf die Form klatschen und im
TPrototypeBindSource
Delphi-Quellcode:
TPrototypeBindSource.OnCreateAdapter
Delphi-Quellcode:
In dem
procedure TForm1.PrototypeBindSource1CreateAdapter( Sender: TObject; var ABindSourceAdapter: TBindSourceAdapter );
begin FItems := TObjectList<TListViewItemViewModel>.Create; ABindSourceAdapter := TListBindSourceAdapter<TListViewItemViewModel>.Create( Self, FItems, True ); end;
Delphi-Quellcode:
kannst/musst du noch die Felder definieren, die dann auf die Objekt-Eigenschaften der Objekte in der Liste gemappt werden ...
TPrototypeBindSource
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. |
AW: Livebinding einer FMX TListView an TStrings
OK, Ich versuche das mal.
Sind meine ersten MVVM, livebinding und FMX Gehversuche. Werde Jubel posten wenn es klappt. |
AW: Livebinding einer FMX TListView an TStrings
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:
Müsste sicher sein da das ViewModel ja eh nichts vom View weiß.
constructor TView.Create(AOwner: TComponent);
begin fViewModel := TViewModel.create; inherited; end; 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... |
AW: Livebinding einer FMX TListView an TStrings
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 |
AW: Livebinding einer FMX TListView an TStrings
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 ? |
AW: Livebinding einer FMX TListView an TStrings
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. |
AW: Livebinding einer FMX TListView an TStrings
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 ![]() 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? |
AW: Livebinding einer FMX TListView an TStrings
|
AW: Livebinding einer FMX TListView an TStrings
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 ? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz