Вставьте вид Monogame внутри MvvmCross monodroid Activity

Я пытаюсь создать вид Monogame внутри RelativeLayout из моего вида MvvmCross monodroid Activity.

Активность Android наследуется от Microsoft.Xna.Framework.AndroidGameActivity, чтобы иметь возможность запускать Monogame внутри RelativeLayout (работает).

Моя активность MvvmCross наследуется от MvxBindingActivityView(работает).

Итак, мне нужен способ запустить игру и связать некоторые данные в рамках одной и той же деятельности.

Заранее спасибо за помощь.

1 ответ

Решение

Грубо говоря, вы можете перевести любое действие в MvxActivity, унаследовав некоторые интерфейсы, а затем вырезав и вставив небольшой объем кода, который выполняет базовую загрузку и назначение ViewModel.

например, увидеть #Region а также IMvxAndroidView<TViewModel> добавлено, чтобы сделать MvxActivityView.cs из нормального Activity,

например, это тот же регион и интерфейс, который используется для адаптации специализированных действий, таких как Google MapActivity в MvxMapActivityView.cs

На этом уровне Activity/View имеет ViewModel который может быть использован в коде C#, но не имеет умной инфляции XML - у него нет умной Binding служба поддержки.

Код можно написать на этом уровне - я поставлял приложения без привязки - но многие пользователи предпочитают добавлять DataBinding тоже...


Чтобы добавить эту поддержку DataBinding, вам нужно добавить немного больше кода, который обеспечивает BindingInflate, хранилище привязок, удаление привязок и т. Д.

например, сырье MvxActivityView расширяется с помощью IMvxBindingActivity интерфейс и #region, как: MvxBindingActivityView.cs

например MvxMapActivityView расширяется с использованием того же региона и интерфейса: MvxBindingMapActivityView.cs


Так чтобы продлить свой обычай AndroidGameActivity:

  1. Наследовать от AndroidGameActivity получить ViewModelOwningGameActivity<T> и вырезать и вставить IMvxAndroidView<TViewModel> интерфейс и #region от MvxActivityView<T> предоставить методы, поля и свойства ViewModel.

Тогда, если вы хотите связать:

  1. Наследовать от ViewModelOwningGameActivity<T> получить BindingGameActivity<T> и вырезать и вставить IMvxBindingActivity а также #region от MvxBindingActivityView<T> чтобы получить методы привязки

Для специализированных видов деятельности вы можете добавить больше - например, вы можете добавить некоторые пользовательские вспомогательные методы для MapActivity для построения точек и линий или для GameActivity для выполнения любых игр... но это зависит от индивидуальных реализаций.


Извините за нарезку и вставку кода, необходимого для адаптации Деятельности - я постарался свести это к минимуму. Тем не менее, написание Mvx - единственный раз, когда я действительно хотел множественное наследование или миксины в C#

Другие вопросы по тегам