WhenActivated 未在 ViewModel 中调用

WhenActivated not called in ViewModel

我正在使用 ReactiveUI 8.7.2 创建具有共享 ViewModel 的 android/iOS Xamarin.Native 应用程序。我想在 Fragments 和相应的 ViewModels 中使用 WhenActivated,但它只在 Fragments 中被调用。这是我的代码:

基础视图模型:

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");
        });
    }
}

视图模型

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");
        });
    }
}

我错过了什么?

[张贴我的评论的扩展版本作为完整性的答案。]

确保分配 MyFragment/BaseReactiveFragment 的 ViewModel 属性。 ViewModel 属性 仅在您使用 ReactiveUI 的路由基础结构时自动分配,例如RoutedViewHost or ViewModelViewHost。但是因为 Android 使用不同的机制(意图)来构建 Activity,所以 ReactiveUI.Android 不包括那些助手。

很高兴听到这是一个简单的修复。编码愉快!