【问题标题】:Does ReactiveUI offers PRISM ViewModelLocator like service?ReactiveUI 是否提供类似 PRISM ViewModelLocator 的服务?
【发布时间】:2021-09-11 09:21:08
【问题描述】:

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

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

因此,我们的DataContext 设置了MyViewModel 的实例。

我试图在 ReactiveUI 中找到相同的技术,但我发现的只是这个link。它说您只需要在您的视图模型中实现IActivatableViewModel,并且如果您在视图代码隐藏中有WhenActivated 块,那么实现IViewFor&lt;T&gt; 视图模型就会被激活。

问题:

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

【问题讨论】:

  • ReactiveUI 是基于视图模型的方法。因此,您将创建视图模型,导航将为视图模型创建一个视图。 github.com/reactiveui/ReactiveUI.Samples/tree/main/wpf/…这与棱镜相反,棱镜是视图优先,您创建一个视图,然后它为该视图创建一个视图模型。

标签: c# wpf prism reactiveui


【解决方案1】:

“被激活”是什么意思?

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

我希望视图模型由 ReactiveUI 自动设置...

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

ReactiveUI 是否提供在视图激活时设置视图模型的服务?

没有。您应该自己创建视图模型并让 ReactiveUI 解析相应的视图。查看文档中的 Routing section 以获取示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-31
    • 2023-02-02
    • 1970-01-01
    • 2023-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多