简单地说,您可以通过继承一些接口,然后剪切和粘贴少量代码来执行 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>
接口,继承#region
fromMvxActivityView<T>
提供 ViewModel 方法、字段和属性。
然后假设你想要绑定:
- 继承自
ViewModelOwningGameActivity<T>
获取BindingGameActivity<T>
和剪切粘贴IMvxBindingActivity
和#region
从MvxBindingActivityView<T>
获取绑定方法
对于专业活动,您可能想要添加更多 - 例如,您可以为 MapActivity 添加一些自定义帮助方法来绘制点和线,或者让 GameActivity 做任何游戏......但这取决于个人实现。
很抱歉在调整活动时需要剪切和粘贴代码 - 我已尝试将其保持在最低限度。然而,到目前为止,我真正想要在 C# 中使用多重继承或 Mixins 编写 Mvx