【发布时间】:2015-12-16 18:00:11
【问题描述】:
我正在使用数据模板通过 PRISM 4 发现加载我的视图。我需要多次创建视图/视图模型而不是重用现有实例,因此我在资源中设置 x:Shared=false 但它只对视图模型有影响。我可以确认视图模型没有被重用,但视图是。视图构造函数仅在第一次调用时调用一次。我在这里读过类似的帖子,但他们的解决方案对我不起作用。我想知道我是否可以扩展资源加载器/定位器并确保它尊重共享标志。
这是我的模板的定义方式:
<DataTemplate DataType="{x:Type CVM:MyViewModel}" x:Shared="False">
<V:MyView />
</DataTemplate>
【问题讨论】:
-
任何解决方法都无需更改设计?
-
不知道,没用过棱镜,实在想不出什么优雅的东西。
-
在 Prism 中,您可以通过
PartCreationPolicy属性控制是否需要单例。Shared= 单例,NonShared= 一个新实例。你用[PartCreationPolicy(CreationPolicy.NonShared)]装饰你的视图了吗? -
谢谢 Meeleak,我刚刚测试过了。它适用于视图模型,但不适用于视图。视图构造函数仍然只调用一次。