我正在尝试从MvvmCross monodroid Activity视图中的RelativeLayout中构建Monogame视图。
Android Activity继承自Microsoft.Xna.Framework.AndroidGameActivity,以便能够在RelativeLayout(工作)中运行Monogame。
我的MvvmCross活动继承自MvxBindingActivityView(正在工作)。
所以,我需要一种方法来运行游戏并在同一活动中绑定一些数据。
提前感谢您的帮助。
答案 0 :(得分:4)
简而言之,您可以通过继承某些接口,然后剪切并粘贴少量代码来将任何Activity转换为MvxActivity,这些代码执行ViewModel的基本加载和分配。
e.g。请参阅#Region
和IMvxAndroidView<TViewModel>
添加,以便从正常Activity
生成MvxActivityView.cs。
e.g。它是用于将Google MapActivity
等专门活动调整为MvxMapActivityView.cs
在此级别,活动/视图的ViewModel
可以在C#代码中使用,但没有聪明的xml通胀 - 它没有聪明的Binding
支持。
代码可以在这个级别编写 - 我已经发布了没有绑定的应用程序 - 但许多用户也喜欢添加DataBinding ......
要添加此DataBinding支持,您需要添加更多代码,这些代码提供BindingInflate,绑定存储,绑定处理等。
e.g。原始MvxActivityView
使用IMvxBindingActivity
界面和#region扩展,如:MvxBindingActivityView.cs
e.g。 MvxMapActivityView
使用相同的区域和界面进行了扩展:MvxBindingMapActivityView.cs
所以要扩展自定义AndroidGameActivity
:
AndroidGameActivity
以获取ViewModelOwningGameActivity<T>
并剪切并粘贴IMvxAndroidView<TViewModel>
界面和#region
MvxActivityView<T>
以提供ViewModel方法,字段和属性。 然后假设你想要绑定:
ViewModelOwningGameActivity<T>
以获取BindingGameActivity<T>
并剪切并粘贴IMvxBindingActivity
和#region
MvxBindingActivityView<T>
以获取绑定方法对于专业活动,您可能需要添加更多内容 - 例如您可以为MapActivity添加一些自定义辅助方法来绘制点和线,或者为GameActivity添加任何游戏 ......但这取决于单个实现。
对于调整活动所需的代码剪切和粘贴感到抱歉 - 我试图将此保持在最低限度。但是,到目前为止,编写Mvx已经有一次我真的想在C#中使用多重继承或混合