DataTemplate中X:共享=假对图没有影响(DataTemplate x:Shared=fa

2019-06-25 01:32发布

我使用的DataTemplate使用PRISM 4发现加载自己的看法。 我有一个需要创建视图/视图模型多次,而不是重用现有的情况下,所以我设置X:共享=在资源虚假的,但它只是对视图模型的影响。 我可以证实,视图模型不再被使用,但观点。 视图构造函数只调用一次在第一次被调用。 我已经读到这里类似的职位,但他们的解决方案并没有为我工作。 我想知道如果我能一些如何扩展资源加载器/定位器,并确保它尊重共享标志。

这里是我的模板是如何定义的:

 <DataTemplate DataType="{x:Type CVM:MyViewModel}" x:Shared="False">
        <V:MyView />
 </DataTemplate>

Answer 1:

所有DataTemplate包含一个'Template'用于创建对象时(在你的情况下,视图模型)映入眼帘必要的视觉树。

因此,如果只有一个你'MyViewModel'的对象是视图,则您观看才会被调用一次构造器(即使多的ViewModels被实例化)。 如果你有几个鉴于您的ViewModels的,那么您的视图的构造函数将被多次作为你的模板DataTemplate得到正确构造,并添加到Visual树(一次为每个视图模型)。

但是,如果您ItemsControl (保存您的ViewModels)具有虚拟化接通,那么只有一个“容器”(其以简化的术语将是您的DataTemplate)可以存在,并且可以被重新使用。



文章来源: DataTemplate x:Shared=false has no impact on the view
标签: wpf prism-4