ReactiveUI 是否提供类似 PRISM ViewModelLocator 的服务?

Does ReactiveUI offers PRISM ViewModelLocator like service?

使用 PRISM 框架,我们这样做:

<UserControl x:Class="ProjectName.MyView"
             xmlns:prism="http://prismlibrary.com/"
             prism:ViewModelLocator.AutoWireViewModel="True">
</UserControl>

因此,我们的 DataContext 集包含 MyViewModel 的实例。

我试图在 ReactiveUI 中找到相同的技术,但我只找到了这个 link。它说你所需要的只是在你的视图模型中实现 IActivatableViewModel,如果你在视图代码隐藏中有 WhenActivated 块,那么实现 IViewFor<T> 视图模型就会被激活。

问题:

1). “激活”是什么意思?我希望视图模型由 ReactiveUI 自动设置,但这种行为不会发生,所以看起来我误解了“激活”的实际含义。
2). ReactiveUI 是否提供在视图激活时设置视图模型的服务?如果是,请提供代码示例。

What does "get activated" mean?

激活用于延迟视图模型的设置,直到加载相应的视图:https://www.reactiveui.net/docs/handbook/when-activated

I expect that view model is set by ReactiveUI automatically ...

你的期望是错误的。在 ReactiveUI 中,视图是基于视图模型解析的(与 Prism 中使用视图模型定位器的视图解析视图模型相反)。

Does ReactiveUI provide such service which set view model when view become activated?

没有。你应该自己创建视图模型,让 ReactiveUI 解析对应的视图。查看文档中的 Routing section 示例。