Delphi-Quellcode:
if Assigned(FOnPropertyChangeTracking) then
begin
FOnPropertyChangeTracking.Invoke(Self, 'Text');
FOnPropertyChanged.Invoke(Self, 'ItemIndex'); // <--- hier erweitert
end;
Das muss wohl
FOnPropertyChangeTracking.Invoke(Self, 'ItemIndex'); // <--- hier erweitert
heißen.
Sieht ansonsten aber nach genau der richtigen Stelle aus. Nur die Control Interposer Klassen können die Notifications Triggern, wenn man diesen Ansatz nimmt um das Feature als Drop-in zu nutzen und nicht extra binding aware Controls bauen möchte. Kurzer Blick in meinen DSharp Code geworfen... jup, ItemIndex und Text sind auch dort die Eigenschaften, über deren Änderung benachrichtig wird im Change.
Soweit ich das sehen kann, ist das Projekt aber auch derzeit nicht über den "netter Prototyp" Status hinausgekommen - mein ich keineswegs negativ.
Richtiges MVVM (und nicht, das was manche MVVM nennen) steht und fällt mit ner guten Databinding Lösung - und die schaut durchaus tauglich aus. Das ist auch zusammen mit dem TreeViewPresenter der Teil, den wir aus DSharp einsetzen.
Ich bin inzwischen der Meinung, dass wenn man zu ambitioniert versucht, MVVM so zu bauen, wie es in anderen Sprachen geht (deklarativ), fällt einem das zu schnell auf die Füße in Delphi, weils entweder wie bei Visual Livebinding einfach nur ein Riesengroßer unwartbarer Klump in den
dfm Dateien wird außer man baut ein robustes Tooling drumrum, was massig Arbeit ist, so dass man das zur Designzeit schon auswerten kann - grad wenn man mit CoC arbeitet und Dinge automatisch binden lässt.