Я использую MVVMCross, и у меня проблема с привязками MvxDialogFragment. У меня есть базовая служба, которая разрешается в проекте Core PCL, добавляю реализации пользовательских служб в проекты iOS и Android, полученные из базового класса службы.
В службе Android я создаю и показываю экземпляр MvxDialogFragment:
var top = (MvxFragmentActivity)Mvx.Resolve<IMvxAndroidCurrentTopActivity>().Activity;
if (top == null)
{
throw new MvxException("Cannot get current top activity");
}
var dlg = new AlertDialog.Builder(top);
dlg.Create().Show();
dialog = new MyDialog
{
Cancelable = false
};
dialog.Show(top.SupportFragmentManager, "");
И у меня есть простой макет диалога:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/test_click_button"
android:text="Test"
app:MvxBind="Click TestClickCommand" />
</LinearLayout>
Итак, моя цель — получить доступ к командам базовой службы из dialogFragment, экземпляр которого создается из службы. Как я могу это сделать?
В качестве альтернативы я хочу обработать нажатие кнопки в службе, но не могу найти способ сделать это, потому что мои свойства View, ViewModel или Dialog имеют значение null.
Как можно обрабатывать клики в сервисе или реализовать самопривязку?