gpt4 book ai didi

Prism/MEF 新 View 未从 MEF 导入中获取新 View 模型

转载 作者:行者123 更新时间:2023-12-01 11:06:20 28 4
gpt4 key购买 nike

我有一个选项卡式应用程序,我希望用户能够在其中搜索某个人,然后在新 View 中显示此人的详细信息。用户应该能够为不同的人打开多个人的详细信息 View 。

我有点不确定我是否遵循了创建新 View 的正确过程。使用 Unity(我不是),您似乎会调用 Container.Resolve(view) 但是我正在执行以下操作,satisfyImports 是必要的,以便在 View / View 模型中创建我的导入.

PersonDetailView view = new PersonDetailView();
_container.SatisfyImportsOnce(view);
_regionManager.Regions["MainRegion"].Add(view, this.SelectedPerson.Name);
_regionManager.RequestNavigate("MainRegion", new Uri("PersonDetailView", UriKind.Relative));

在我的 PersonDetailView 代码中,我有以下属性来设置数据上下文。

[Import]
public PersonDetailsViewModel ViewModel
{
set
{
this.DataContext = value;
}
}

这似乎可行,但我遇到的问题是,当我创建第二人称 View 时,新 View 获取的数据上下文实例与已创建的 View 相同。

这是因为我错误地创建了我的 View ,还是有一种方法可以告诉 MEF 在为我的新 View 完成导入时创建一个新对象?

最佳答案

当您导出一个部分时,默认情况下它使用 SharedCreationPolicy。这实质上使导出的实例成为容器中的单例。在导出时,添加另一个属性:

[Export, PartCreationPolicy(CreationPolicy.NonShared)]
public class Foo { }

这将确保每次调用组合消费者实例时都会创建一个新实例。

关于Prism/MEF 新 View 未从 MEF 导入中获取新 View 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5484880/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com