Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon 一次性结合与MVVMCross中的双向结合有何不同


一次性结合与MVVMCross中的双向结合有何不同


在MVVMCROSS中,一次性结合和双向绑定在管理视图和视图模式之间的相互作用方面具有不同的目的。

###一次性绑定

一次性绑定用于仅在设置绑定源时仅将数据从视图模型传输到视图一次。在此初始传输之后,绑定不会监视对ViewModel属性的更改,并且除非重置绑定源本身,否则不会更新视图。此模式对于可配置但设置后不经常更改的字段很有用。例如,在MVVMCROSS中,一次性绑定用于从语言文件中设置静态文本,因为用户通常会一次选择一种语言,并且很少以后更改它[1] [10]。

###双向绑定

另一方面,双向结合在视图和视图模式之间建立了连续的双向连接。另一个视图或ViewModel触发更新的更改。在编辑现有数据时,此模式特别有用,例如填写表单,用户的输入和ViewModel的任何更改都需要实时反映。双向绑定通常用于MVVMCROSS,通常用作新绑定的默认模式[1] [2]。

###密钥差异

- 数据流的方向:一次性绑定仅一次从ViewModel更新视图,而双向绑定会连续更新视图和视图模型。
- 更改监视:一次性绑定在初始更新后不会监视更改,而双向绑定连续监视和更新两端。
- 用例:一次性是静态或不经常变化的数据的理想选择,而双向更适合交互式形式或动态数据交换。

总而言之,一次性绑定用于静态或初始数据设置,而双​​向绑定用于交互式场景,其中视图和ViewModel都需要实时反映彼此的变化。

引用:
[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[3] https://www.mvvmcross.com/documentation/advanced/custom-data-binding
[4] https://softwareengineering.stackexchange.com/questions/322450/how-does-two-way-way-data-data-inda-binding-differ-differ-from-simple-auto-sync
[5] https://stackoverflow.com/questions/17156368/
[6] https://yanxiaodi.gitbook.io/xamarin-mvvmcrosshandbook/ususion-mvvmcross-to-create-your-first-first-first-first-first-first-first-creating-the-the-android-the-android-project/underc----------------sy-and-handroid-project/underting-the-data-data-inda-binding-syntax-syntax
[7] https://stackoverflow.com/questions/13504906/what-is-two-way-inding
[8] https://github.com/mvvmcross/mvvmcross/issues/29
[9] https://stackoverflow.com/questions/27803448/data-binding-one-ves-two-way
[10] https://stackoverflow.com/questions/48910503/binding-mode-onetime-intime-intime-inmetime-in-mvxrecyclerview
[11] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/binding-mode?view=net-maui-9.0
[12] https://www.reddit.com/r/javascript/comments/v993r4/askjs_why_is_is_oneway_binding_better_better_better_than_twowoway/