[英]C# Prism: Instantiate Model before View Instantiation
TL; DR是否有一种方法可以强制MEF Prism容器在通过View Disovery实例化某个类之前实例化该类? 即在regionManager.RegisterViewWithRegion
之前
我有一个业务流程,用户可以通过该流程登录,然后启动一些数据库读取操作。 LoginEvent
已注册到EventAggregator
以便应用程序的其他部分可以听到它。 问题是我的模型MyModel
仅在注册了依赖视图之后才实例化,这当然会在登录事件过去并消失之后发生。 我可以做这个MyModel
的构造函数,但是感觉很草率。
当前过程
1. User logs in
2. LoginEvent is dispatched
2. View switches to MyView
3. MyModel is instantiated and listens for LoginEvent that will never be dispatched
所需过程
1. MyModel is instantiated and listens for LoginEvent
2. User Logs in
3. LoginEvent is dispatched
4. MyModel hears LoginEvent and kicks of data read.
在此方面的任何帮助将不胜感激。
提前实例化视图,以便可以监听事件。 您可以使用棱镜文档中描述的模块概念在模块Initialize事件中实例化视图。 这将具有以下顺序:
以下示例为您提供了一些概述(尚未经过测试,但在结构上应是有效的):
public class ModuleInit : IModule
{
.....
CompositionContainer container;
IRegionManager regionManager;
[ImportingConstructor]
public ModuleInit(CompositionContainer container, IRegionManager regionManager)
{
this.container = container;
this.regionManager = regionManager;
}
public void Initialize()
{
var myView = this.container.GetExportedValue<MyView>();
regionManager.RegisterViewWithRegion("myregion", () => myView);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.