是的 - 如果你愿意,你可以在 Android 中使用流畅的绑定。
完全相同的代码应该可以工作。
您需要使用 获取对 ui 控件的引用FindViewById<Type>()
,然后才能绑定它们。
例如,在 TipCalc 中,您可以添加已识别的控件,例如:
<EditText
android:id="@+id/FluentEdit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="number"
android:textSize="24dp"
android:gravity="right"
/>
然后使用以下方法实现绑定:
protected override void OnViewModelSet()
{
SetContentView(Resource.Layout.View_Tip);
var edit = this.FindViewById<EditText>(Resource.Id.FluentEdit);
var set = this.CreateBindingSet<TipView, TipViewModel>();
set.Bind(edit).To(vm => vm.SubTotal);
set.Apply();
// for non-default properties use 'For':
// set.Bind(edit).For(ed => ed.Text).To(vm => vm.SubTotal);
// you can also use:
// .WithConversion("converter", "optional parameter")
// .OneTime(), .OneWay() or .TwoWay()
}
此外,您可以通过以下方式将任何 FooActivity 转换为数据绑定 MvxFooActivity:
- 从 FooActivity 继承以在 EventSourceFooActivity 中提供来自生命周期事件的事件
- 从 EventSourceFooActivity 继承以在 MvxFooActivity 中提供数据上下文
- 然后,您可以在继承自 MvxFooActivity 的活动中编写代码
要查看所需的代码,请参阅:
您将在所有 mvx 改编的活动中看到相同的代码 - MvxActivity、MvxTabActivity...这里有一点剪切和粘贴,但尽可能多的代码放在共享扩展方法中。
在以前的版本中,人们使用这种技术来绑定 monogame 和 google ads 活动 - 例如,请参阅在 MvvmCross monodroid Activity 中插入 Monogame 视图