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 不包括那些助手。
很高兴听到这是一个简单的修复。编码愉快!
我正在使用 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 不包括那些助手。
很高兴听到这是一个简单的修复。编码愉快!