大まかに言えば、いくつかのインターフェイスを継承し、ViewModel の基本的な読み込みと割り当てを行う少量のコードをカット アンド ペーストすることで、任意のアクティビティを MvxActivity に変換できます。
たとえば、通常の からMvxActivityView.cs#Region
を作成するためにIMvxAndroidView<TViewModel>
追加された を参照してください。Activity
MapActivity
たとえば、Google のような特殊なアクティビティをMvxMapActivityView.csに適合させるために使用されるのと同じリージョンとインターフェイスです。
このレベルでは、Activity/View にはViewModel
C# コードで使用できる がありますが、巧妙な xml インフレーションはありません - 巧妙なBinding
サポートはありません。
コードはこのレベルで書くことができます - 私はバインドなしでアプリを出荷しました - しかし、多くのユーザーは DataBinding も追加することを好みます...
この DataBinding サポートを追加するには、BindingInflate、バインディングの保存、バインディングの破棄などを提供するコードをもう少し追加する必要があります。
たとえば、rawMvxActivityView
はIMvxBindingActivity
インターフェイスと #region を使用して拡張されます: MvxBindingActivityView.cs
たとえばMvxMapActivityView
、同じリージョンとインターフェイスを使用して拡張されています: MvxBindingMapActivityView.cs
したがって、カスタムを拡張するにはAndroidGameActivity
:
- インターフェイス
AndroidGameActivity
を取得ViewModelOwningGameActivity<T>
してカット アンド ペーストし、ViewModel のメソッド、フィールド、およびプロパティを提供するためにfromを継承します。IMvxAndroidView<TViewModel>
#region
MvxActivityView<T>
次に、バインディングが必要であると仮定します。
- from を継承し
ViewModelOwningGameActivity<T>
て getし、fromをBindingGameActivity<T>
カット アンド ペーストしてバインディング メソッドを取得します。IMvxBindingActivity
#region
MvxBindingActivityView<T>
専門的なアクティビティの場合は、さらに追加したい場合があります。たとえば、MapActivity が点や線をプロットするためのカスタム ヘルパー メソッドを追加したり、GameActivity がゲームで行うことを実行したりすることができますが、これは個々の実装次第です。
アクティビティを適応させるために必要なコードの切り取りと貼り付けについて申し訳ありません - 私はこれを最小限に抑えようとしました. ただし、Mvx を作成するのは、C# で複数の継承または Mixins が本当に必要だったのはこれまで 1 回だけです。