2

我正在尝试从我的 MvvmCross monodroid Activity 视图中的 RelativeLayout 中构建一个 Monogame 视图。

android Activity 继承自 Microsoft.Xna.Framework.AndroidGameActivity 以便能够在 RelativeLayout(工作)中运行 Monogame。

我的 MvvmCross Activity 继承自 MvxBindingActivityView(working)。

所以,我需要一种方法来运行游戏并在同一个活动中绑定一些数据。

在此先感谢您的帮助。

4

1 回答 1

5

简单地说,您可以通过继承一些接口,然后剪切和粘贴少量代码来执行 ViewModel 的基本加载和分配,将任何 Activity 转换为 MvxActivity。

例如,查看#RegionIMvxAndroidView<TViewModel>添加以使MvxActivityView.cs从正常的Activity.

例如,它是用于将 Google 之类的专用 Activity 适配MapActivityMvxMapActivityView.cs中的相同区域和接口

在这个级别,Activity/View 有一个ViewModel可以在 C# 代码中使用,但没有聪明的 xml 膨胀——它没有聪明的Binding支持。

可以在这个级别编写代码——我已经发布了没有绑定的应用程序——但许多用户也更喜欢添加 DataBinding ......


要添加此 DataBinding 支持,您需要添加更多代码,以提供 BindingInflate、绑定存储、绑定处置等。

例如,使用接口和#regionMvxActivityView扩展原始数据,例如: MvxBindingActivityView.csIMvxBindingActivity

例如MvxMapActivityView使用相同的区域和接口进行扩展:MvxBindingMapActivityView.cs


因此,要扩展您的自定义AndroidGameActivity

  1. 继承 fromAndroidGameActivity获取ViewModelOwningGameActivity<T>和剪切和粘贴IMvxAndroidView<TViewModel>接口,继承#regionfromMvxActivityView<T>提供 ViewModel 方法、字段和属性。

然后假设你想要绑定:

  1. 继承自ViewModelOwningGameActivity<T>获取BindingGameActivity<T>和剪切粘贴IMvxBindingActivity#regionMvxBindingActivityView<T>获取绑定方法

对于专业活动,您可能想要添加更多 - 例如,您可以为 MapActivity 添加一些自定义帮助方法来绘制点和线,或者让 GameActivity 做任何游戏......但这取决于个人实现。


很抱歉在调整活动时需要剪切和粘贴代码 - 我已尝试将其保持在最低限度。然而,到目前为止,我真正想要在 C# 中使用多重继承或 Mixins 编写 Mvx

于 2012-11-02T19:28:40.200 回答