简单地说,您可以通过继承一些接口,然后剪切和粘贴少量代码来执行 ViewModel 的基本加载和分配,将任何 Activity 转换为 MvxActivity。
例如,查看#Region并IMvxAndroidView<TViewModel>添加以使MvxActivityView.cs从正常的Activity.
例如,它是用于将 Google 之类的专用 Activity 适配MapActivity到MvxMapActivityView.cs中的相同区域和接口
在这个级别,Activity/View 有一个ViewModel可以在 C# 代码中使用,但没有聪明的 xml 膨胀——它没有聪明的Binding支持。
可以在这个级别编写代码——我已经发布了没有绑定的应用程序——但许多用户也更喜欢添加 DataBinding ......
要添加此 DataBinding 支持,您需要添加更多代码,以提供 BindingInflate、绑定存储、绑定处置等。
例如,使用接口和#regionMvxActivityView扩展原始数据,例如: MvxBindingActivityView.csIMvxBindingActivity
例如MvxMapActivityView使用相同的区域和接口进行扩展:MvxBindingMapActivityView.cs
因此,要扩展您的自定义AndroidGameActivity:
- 继承 from
AndroidGameActivity获取ViewModelOwningGameActivity<T>和剪切和粘贴IMvxAndroidView<TViewModel>接口,继承#regionfromMvxActivityView<T>提供 ViewModel 方法、字段和属性。
然后假设你想要绑定:
- 继承自
ViewModelOwningGameActivity<T>获取BindingGameActivity<T>和剪切粘贴IMvxBindingActivity和#region从MvxBindingActivityView<T>获取绑定方法
对于专业活动,您可能想要添加更多 - 例如,您可以为 MapActivity 添加一些自定义帮助方法来绘制点和线,或者让 GameActivity 做任何游戏......但这取决于个人实现。
很抱歉在调整活动时需要剪切和粘贴代码 - 我已尝试将其保持在最低限度。然而,到目前为止,我真正想要在 C# 中使用多重继承或 Mixins 编写 Mvx