首页 > 解决方案 > MvvmCross CreateBindingSet 的预期用途

问题描述

所以我最近从我的一个队友那里遇到了一个有趣的场景。

他们目前正在一个Xamarin项目中工作并利用MvvmCross. 他们决定CreateBindingSet直接在 xaml 中专门使用 over 绑定。

对我来说,这似乎是 Mvvm 的反模式。它将后面的代码与视图模型紧密耦合,并为设计为绑定在 xaml 中的平台增加了额外的复杂性。

我试图了解在后面的代码中使用这个函数是否是一个好主意,但我无法从文档中得出结论。

有人可以告诉我预期的用例是CreateBindingSet什么吗?

标签: xamarinmvvmdata-bindingmvvmcross

解决方案


除了提供可轻松包含在 xml 布局文件中的文本格式绑定语句外,MvvmCross 还提供基于 C# 的语法,以便使用代码轻松构建绑定。

这种绑定语法称为Fluent绑定。

例如

MvvmCross通过以下代码创建 View 和 ViewModel 之间的关系:

var set = this.CreateBindingSet<MyView, MyViewModel>();

For然后你可以通过andTo方法设置数据绑定:

set.Bind(LabelUserName).For(x => x.Text).To(vm => vm.UserName);

使用流利的语法我们可以继续指定绑定类型,比如 OneWay 和 TwoWay 等,像这样:

set.Bind(LabelUserName).For(x => x.Text).To(vm => vm.UserName).TwoWay();

Fluent binding 在 Xml 布局格式不易人工编辑的 iOS 和 OSX 平台中特别有用(在 iOS 和 MACOS 平台中没有这样的 xml 文件,因此我们需要在代码中设置绑定)。

有关更多详细信息,您可以查看https://www.mvvmcross.com/documentation/fundamentals/data-binding


推荐阅读