Wenn Du Dir meine Demo anschaust, dann wirst Du bemerken, dass die Validierung, die an die Bindings angehangen wird, dort irgendwie nicht ganz passt. M.E. gehört da ein Callback zur Validierung in der Datenklasse als Möglichkeit dazu.
Jein, so ist die Validierung auch entkoppelt. Ist aber insgesamt ein Problem, auch in WPF gibt es dahingehend verschiedene Ansätze, das ganze über das ViewModel zu machen oder nicht.
Im Moment ist sie dafür an das Binding gekoppelt.
Man kann sich aber ohne Probleme eine ValidationRule erstellen, die über ein Callback arbeitet. Problem in dem Demo ist, dass die ValidationRule im Model gebaut wird. Da gehört sich imo nicht hin, sondern im wire up code.
Im Formular ist keine DSharp-
Unit erforderlich und das war mein Ziel. Und wenn DSharp zukünftig beide Ansätze unterstützt, kann die Diskussion führen wer will und sich zumindest nicht an mangelnder Funktionalität fest machen
Gleichzeitig fehlt mir die Möglichkeit, Property- Änderungen, die die Validierung nicht passieren, zurück weisen zu können.
Hm, wenn die Validierung fehlschlägt, wird eigentlich der Wert nicht übertragen (wenn doch, ist das ein Bug) - was evtl der Fall sein kann, ist, dass das Control nicht "zurückgesetzt" wird. Das enthält dann nämlich noch den invaliden Wert.
Logisch, und nun?
Ich habe mittels DI/Emballo die Datenklasse im Formular als Interface zur Verfügung gestellt, um die
Unit-Referenz zu entsorgen. Leider werden nun die Bindings nicht mehr frei gegeben und ich erhalte ein Memoryleak. Wie werden die TBindings explizit wieder frei gegeben?
Die Bindings entweder über ihre TBindingGroup freigegeben. Sollten sie keiner BindingGroup angehören über Source oder Target (wenn eins von beiden von TComponent ist).
Falls es noch Probleme gibt, einfach nochmal aktuelle Version uppen und ich schau mal drüber.
Ich werde einmal etwas vorbereiten und dazu auch ein Refactoring der Datenklasse durchführen, weil sich mein "Zeig-Du-Mir-Wie's-Geht-AG" ja nun aus der Diskussion verabschiedet hat.