Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Wie handelt es sich bei MVVMCross-Updates, wenn Sie die einmalige Bindung verwenden?


Wie handelt es sich bei MVVMCross-Updates, wenn Sie die einmalige Bindung verwenden?


MVVMCross verarbeitet Aktualisierungen, wenn die einmalige Bindung verwendet wird, indem Daten aus dem ViewModel nur einmal in die Ansicht übertragen werden, wenn die Bindungsquelle ursprünglich festgelegt wird. Nach dieser ersten Übertragung überwacht die Bindung keine aktiven Änderungsnachrichten oder Ereignisse aus dem ViewModel. Daher werden nachfolgende Änderungen an der Eigenschaft des ViewModel in der Ansicht nicht reflektiert, es sei denn, die Bindungsquelle selbst wird zurückgesetzt oder neu initialisiert.

Schlüsselpunkte der einmaligen Bindung in mvvmcross:

1. Erstes Datenübertragung: Die Bindung überträgt Daten vom ViewModel auf die Ansicht, wenn die Bindung zum ersten Mal festgelegt wird. Dies ist in der Regel für Felder nützlich, die konfigurierbar sind, sich jedoch nicht häufig ändern, nachdem sie festgelegt wurden.

2. Keine kontinuierliche Überwachung: Im Gegensatz zu Zwei-Wege- oder Einwegbindungen überwachen einmalige Bindungen das ViewModel nicht kontinuierlich auf Änderungen. Dies bedeutet, dass sich die Ansicht nicht automatisch aktualisiert, wenn sich die Eigenschaft des ViewModel nach der anfänglichen Bindung ändert.

3. Anwendungsfälle: Eine einmalige Bindung wird üblicherweise in Szenarien verwendet, in denen die Daten statisch sind oder selten ändert, z. B. statische Text aus Sprachdateien. Sobald eine Sprache ausgewählt ist, ist es ungewöhnlich, dass der Benutzer sie häufig ändert und die einmalige Bindung für solche Fälle geeignet ist [1].

4. Zurücksetzen der Bindungsquelle: Wenn die Bindungsquelle zurückgesetzt oder neu initialisiert wird, überträgt die einmalige Bindung die neuen Daten erneut auf die Ansicht. Dies erfordert jedoch explizite Maßnahmen, um die Bindungsquelle zurückzusetzen.

5. Einschränkungen in dynamischen Ansichten: In dynamischen Ansichten, wie z. In solchen Fällen kann die Bindung neu bewertet werden, wenn die Ansichten wiederverwendet werden, was zu unerwartetem Verhalten führen kann [6].

Zusammenfassend ist die einmalige Bindung von MVVMCross für Szenarien ausgelegt, in denen Daten einmal festgelegt werden und nicht dynamisch aktualisiert werden müssen. Es vereinfacht die Bindungsinfrastruktur, indem die kontinuierliche Überwachung des ViewModel für Änderungen vermieden wird. Es erfordert jedoch manuelle Intervention, um die Ansicht zu aktualisieren, wenn sich die Daten des ViewModel nach der anfänglichen Bindung ändert.

Zitate:
[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://www.mvmcross.com/documentation/fundamentals/dependency-injection
[3] https://learn.microsoft.com/en-us/dotnet/maui/xaml/fundamentals/mvvm?view=net-mau-9.0
[4] https://stackoverflow.com/questions/46558177/mvmcross-updates-to-bound-property-in-view-not-propagating-toperty-in-viewm
[5] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[6] https://stackoverflow.com/questions/48910503/binding-mode-onetime-in-mvxrecyclerview
[7] https://github.com/mvvmcross/mvmcross/issues/87
[8] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/march/async-programming-pattern-for-asynchronous-mvm-applications-data-binding
[9] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/binding-mode?view=net-maui-9.0
[10] https://www.reddit.com/r/dotnetmau/commentments/103ai8p/mvvm_problems_having_troubles_with_data_bindings/
[11] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-setup