2

MvvmCross monodroid Activity ビューから RelativeLayout 内に Monogame ビューを構築しようとしています。

Android アクティビティは Microsoft.Xna.Framework.AndroidGameActivity を継承して、RelativeLayout 内でモノゲームを実行できるようにします (動作中)。

私の MvvmCross アクティビティは MvxBindingActivityView(working) を継承しています。

そのため、ゲームを実行し、同じアクティビティ内でいくつかのデータをバインドする方法が必要です。

よろしくお願いします。

4

1 に答える 1

5

大まかに言えば、いくつかのインターフェイスを継承し、ViewModel の基本的な読み込みと割り当てを行う少量のコードをカット アンド ペーストすることで、任意のアクティビティを MvxActivity に変換できます。

たとえば、通常の からMvxActivityView.cs#Regionを作成するためにIMvxAndroidView<TViewModel>追加された を参照してください。Activity

MapActivityたとえば、Google のような特殊なアクティビティをMvxMapActivityView.csに適合させるために使用されるのと同じリージョンとインターフェイスです。

このレベルでは、Activity/View にはViewModelC# コードで使用できる がありますが、巧妙な xml インフレーションはありません - 巧妙なBindingサポートはありません。

コードはこのレベルで書くことができます - 私はバインドなしでアプリを出荷しました - しかし、多くのユーザーは DataBinding も追加することを好みます...


この DataBinding サポートを追加するには、BindingInflate、バインディングの保存、バインディングの破棄などを提供するコードをもう少し追加する必要があります。

たとえば、rawMvxActivityViewIMvxBindingActivityインターフェイスと #region を使用して拡張されます: MvxBindingActivityView.cs

たとえばMvxMapActivityView、同じリージョンとインターフェイスを使用して拡張されています: MvxBindingMapActivityView.cs


したがって、カスタムを拡張するにはAndroidGameActivity:

  1. インターフェイスAndroidGameActivityを取得ViewModelOwningGameActivity<T>してカット アンド ペーストし、ViewModel のメソッド、フィールド、およびプロパティを提供するためにfromを継承します。IMvxAndroidView<TViewModel>#regionMvxActivityView<T>

次に、バインディングが必要であると仮定します。

  1. from を継承しViewModelOwningGameActivity<T>て getし、fromをBindingGameActivity<T>カット アンド ペーストしてバインディング メソッドを取得します。IMvxBindingActivity#regionMvxBindingActivityView<T>

専門的なアクティビティの場合は、さらに追加したい場合があります。たとえば、MapActivity が点や線をプロットするためのカスタム ヘルパー メソッドを追加したり、GameActivity がゲームで行うことを実行したりすることができますが、これは個々の実装次第です。


アクティビティを適応させるために必要なコードの切り取りと貼り付けについて申し訳ありません - 私はこれを最小限に抑えようとしました. ただし、Mvx を作成するのは、C# で複数の継承または Mixins が本当に必要だったのはこれまで 1 回だけです。

于 2012-11-02T19:28:40.200 に答える