【问题标题】:Insert a Monogame view inside MvvmCross monodroid Activity在 MvvmCross monodroid Activity 中插入一个 Monogame 视图
【发布时间】:2012-10-23 11:06:35
【问题描述】:

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

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

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

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

提前感谢您的帮助。

【问题讨论】:

    标签: xamarin.ios xamarin.android xamarin mvvmcross monogame


    【解决方案1】:

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

    例如查看添加的#RegionIMvxAndroidView<TViewModel> 以使MvxActivityView.cs 由普通的Activity 组成。

    例如它与用于将 Google 的 MapActivity 等专用 Activity 调整为 MvxMapActivityView.cs 的区域和界面相同

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

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


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

    例如原始的MvxActivityView 使用IMvxBindingActivity 接口和#region 扩展,例如:MvxBindingActivityView.cs

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


    所以要扩展您的自定义AndroidGameActivity

    1. AndroidGameActivity继承得到ViewModelOwningGameActivity<T>,并从MvxActivityView<T>剪切和粘贴IMvxAndroidView<TViewModel>接口和#region以提供ViewModel方法、字段和属性。

    那么假设你想要绑定:

    1. ViewModelOwningGameActivity<T>继承得到BindingGameActivity<T>,从MvxBindingActivityView<T>剪切粘贴IMvxBindingActivity#region得到绑定方法

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


    对于改编活动所需的代码剪切和粘贴,我深表歉意 - 我已尝试将其保持在最低限度。然而,到目前为止,我有一次真正想要在 C# 中使用多重继承或 Mixins 编写 Mvx

    【讨论】:

    • 我将 MvxActivityView 克隆到 MvxGameActivityView 并将继承从 Activity 更改为 AndroidGameActivity。然后我将 MvxBindingActivityView 克隆到 MvxBindingGameActivityView 并将继承从 MvxActivityView 更改为 MvxGameActivityView。它现在正在使用我的快速测试。非常感谢。
    猜你喜欢
    • 2012-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    相关资源
    最近更新 更多