Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Wie unterscheidet sich die einmalige Bindung von der Einwegbindung in mvvmcross


Wie unterscheidet sich die einmalige Bindung von der Einwegbindung in mvvmcross


In MVVMCross sind einmalige Bindung und Einwegbindung zwei unterschiedliche Datenbindungsmodi, die unterschiedliche Zwecke dienen.

einmalige Bindung

Einmalbindung überträgt Daten vom ViewModel nur einmal zum Ansicht, wenn die Bindungsquelle anfänglich festgelegt wird. Nach dieser ersten Übertragung überwacht die Bindung keine Änderungen im ViewModel und aktualisiert die Ansicht nicht, es sei denn, die Bindungsquelle selbst wird zurückgesetzt. Dieser Modus ist nützlich für Felder, die konfigurierbar sind, sich jedoch nicht häufig ändern, nachdem sie festgelegt wurden. Beispielsweise wird in MVVMCross eine einmalige Bindung zum Festlegen statischer Text aus Sprachdateien verwendet, da die Benutzer eine Sprache einmal auswählen und sie danach nicht häufig ändern [1].

Einwegbindung

Die Einwegbindung hingegen aktualisiert die Ansicht kontinuierlich, wenn sich die entsprechende Eigenschaft in der ViewModel ändert. Dies bedeutet, dass Änderungen an der Eigenschaft von ViewModel automatisch in der Ansicht reflektiert werden. Änderungen, die direkt an der Ansicht vorgenommen wurden, wirken sich jedoch nicht auf das ViewModel aus. Einwegbindung ist nützlich, wenn Daten angezeigt werden, die von einer dynamischen Quelle stammen, z. B. Sensordaten oder Netzwerkvorschriften, bei denen die Ansicht den neuesten Status des ViewModel widerspiegeln sollte, aber keine Aktualisierungen an sie zurücksenden muss [1].

Schlüsselunterschiede

-Update-Häufigkeit: einmalige Bindung aktualisiert die Ansicht nur einmal beim Setup, während Einwegbindung die Ansicht kontinuierlich aktualisiert, wenn sich das ViewModel ändert.
-Änderung der Überwachung: Einmalige Bindung überwacht keine Änderungen im ViewModel nach dem Erstaufbau, während die Einwegbindung aktiv auf Änderungen im ViewModel hört.
-Anwendungsfälle: Einmal ist ideal für statische oder selten ändernde Daten, während Einweg für dynamische Daten besser geeignet ist, die in Echtzeit angezeigt werden müssen, ohne dass die Benutzerinteraktion das ViewModel beeinflusst.

Zusammenfassend lässt sich sagen, dass beide Modi Daten vom ViewModel in die Ansicht übertragen, dies nur einmal einst die Bindung der einmaligen Bindung und nicht nach Änderungen überwacht, während die Einwegbindung die Ansicht basierend auf ViewModel-Änderungen kontinuierlich aktualisiert.

Zitate:
[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://blog.ostebaronen.dk/2018/01/mvmcross-binding-target.html
[3] https://stackoverflow.com/questions/41768962/mvmcross-default-binding-mode-used-in-a-project
[4] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[5] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/binding-mode?view=net-maui-9.0
[6] https://yanxiaodi.gitbook.io/xamarin-mvmcross-handbook/using-mvmcross-to-create-your-first-xamarin-app/creating-the--android-project/undarching-the-datainding-syntax
[7] https://www.mvmcross.com/documentation/advanced/custom-data-binding
[8] https://github.com/mvvmcross/mvmcross/issues/29
[9] https://stackoverflow.com/questions/27803448/data-binding-one-vs-two-way
[10] https://stackoverflow.com/questions/48910503/binding-mode-onetime-in-mvxrecyclerview
[11] https://www.reddit.com/r/javascript/comments/v993r4/askjs_why_is_oneway_binding_better_than_twoway/