При активации не вызывается во ViewModel - PullRequest
0 голосов
/ 20 сентября 2018

Я использую ReactiveUI 8.7.2 для создания приложения для Android / iOS Xamarin.Native с общими моделями представления.Я хочу использовать WhenActivated во Фрагментах и ​​соответствующих ViewModels, но он вызывается только во Фрагментах.Вот мой код:

Базовая модель представления:

public class ReactiveViewModel : ReactiveObject, ISupportsActivation
{
    public ViewModelActivator Activator { get; }

    public ReactiveViewModel(ViewModelActivator viewModelActivator)
    {
        Activator = viewModelActivator;

        this.WhenActivated((Action<IDisposable> disposable) =>
        {
            Console.WriteLine("Activated BaseViewModel");
        });
    }

    public ReactiveViewModel() : this(new ViewModelActivator())
    {
    }
}

Базовый фрагмент:

public abstract class BaseReactiveFragment<T> : ReactiveUI.AndroidSupport.ReactiveFragment<T> where T : ReactiveViewModel
{
    public BaseReactiveFragment()
    {
        this.WhenActivated(disposable =>
        {
            Console.WriteLine("Activated BaseFrament");
        });
    }
}

ViewModel

public class MyViewModel : ReactiveViewModel
{
    public MyViewModel()
    {
        this.WhenActivated((Action<IDisposable> disposable) =>
        {
            Console.WriteLine("Activated ViewModel");
        });
    }
}

Фрагмент

public class MyFragment : BaseReactiveFragment<MyViewModel>
{
    public MyFragment() 
    {
        this.WhenActivated((Action<IDisposable> disposable)=>
        {
            Console.WriteLine("Activated Fragment");
        });
    }
}

Чего мне не хватает?

1 Ответ

0 голосов
/ 20 сентября 2018

[Публикация расширенной версии моего комментария в качестве ответа для полноты.]

Убедитесь, что вы присвоили свойству ViewModel MyFragment / BaseReactiveFragment.Свойство ViewModel назначается автоматически только в том случае, если вы используете инфраструктуру маршрутизации ReactiveUI, например, RoutedViewHost или ViewModelViewHost .Но поскольку Android использует другой механизм (намерения) для построения Activity, ReactiveUI.Android не включает этих помощников.

Рад слышать, что это было легко исправить.Удачного кодирования!

...