流利的绑定和瑞士/西藏结合物都是MVVMCross框架的一部分,该框架用于跨平台发展。尽管两种方法都促进了数据绑定,但它们在语法和使用方面有所不同,尤其是它们处理双向数据绑定的方式。
##流利的绑定
MVVMCROSS中的流利绑定提供了一种更现代,更灵活的方式,可以在视图和ViewModel之间绑定数据。它们允许使用更易于读写的流利语法,从而使开发人员更简单地管理复杂的绑定。在双向数据绑定的上下文中,Fluent绑定可以通过在两侧更改时自动更新视图和ViewModel之间的无缝交互。这对于实时同步至关重要的编辑形式特别有用。
流利的绑定支持值转换器,当视图和ViewModel之间的数据类型不同时,这对于双向数据绑定至关重要。这些转换器同时实现`convert'和`convertback'方法来处理两个方向的数据转换[7]。
##瑞士/西藏装订
瑞士和西藏结合是MVVMCross中用于数据结合的较旧语法。它们还支持双向数据绑定,但具有不同的语法。例如,瑞士语法使用一种简单的格式,其中视图中的目标属性连接到ViewModel中的源路径。虽然它支持双向绑定,但它可能不像复杂场景的流利绑定那样灵活或可读。
瑞士绑定需要在需要时明确指定结合模式,其中可能包括单向,双向或一次性绑定。但是,它们可能没有像Fluent绑定一样具有价值转换器的灵活性水平。
## 比较
- 语法和可读性:流利的绑定通常更可读性,更易于管理,尤其是在复杂的情况下。瑞士/西藏绑定具有更简单的语法,但可能不那么灵活。
- 具有价值转换器的灵活性:在处理价值转换器时,流利的绑定更加灵活,这对于数据类型在视图和ViewModel之间有所不同时对于双向数据绑定至关重要。
- 用法:两种方法都支持双向数据绑定,但是由于其可读性和灵活性,流利的绑定更常用于现代应用中。
总而言之,虽然流利和瑞士/西藏绑定都支持双向数据绑定,但Fluent Bindings提供了一种更现代,灵活和可读的方法,使其对复杂应用更可取。
引用:[1] https://www.reddit.com/r/javascript/comments/v993r4/askjs_why_is_is_oneway_binding_better_better_better_than_twowoway/
[2] https://medium.datadriveninvestor.com/implementing-two-way-data-binding-without-without-usin-rame-incon-iny-ny-framework-703963d00a94
[3] https://www.bennadel.com/blog/3538-on-the-rrational-demonization-of-two-way-way-data-binda-bind-in-angular.htm
[4] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[5] https://www.telerik.com/blogs/angular-basics-data-binding-part-part-8-two-way-data绑定
[6] https://handsontable.com/blog/understanding-data-binding-in-react
[7] https://stackoverflow.com/questions/19712103/fluent-binding-and-conversions
[8] https://www.telerik.com/blogs/blazor-basics-data binding