C# 在视图中有自己区域的棱镜模块
我正在用Silverlight 5(MefBootstrapper)在Prism V4.1中练习。不幸的是,我找不到这种情况的实施:C# 在视图中有自己区域的棱镜模块,c#,silverlight,prism-4,C#,Silverlight,Prism 4,我正在用Silverlight 5(MefBootstrapper)在Prism V4.1中练习。不幸的是,我找不到这种情况的实施: 我的Shell.xaml中有两个区域 我的模块(moduleCatalog.xaml中描述的xap文件)(Module1和Module2)被注入这个区域 我在模块中的一个视图(例如模块1)有自己的区域 我想使用prism框架的强大功能将另一个模块注入到这个Module1视图中。事实上,这个模块应该是一个小的prism应用程序,它有自己的模块,可以将参数传递给Mod
我的意思是:模块1内部的视图是否可以创建自己的区域,因此从属模块可以将视图注入该区域?是的,它可以,为什么不可以?加载依赖模块后,只需在此区域注册视图。例如,您可以在从属模块的
IModule.Initialize
方法中执行此操作:
public void Initialize()
{
regionManager.RegisterViewWithRegion("Module1RegionName", () => serviceLocator.GetInstance<DependentModuleView>());
}
public void Initialize()
{
regionManager.RegisterViewWithRegion(“ModuleRegionName”,()=>serviceLocator.GetInstance());
}
然后,您可以导航到此视图,或在注册后随时激活它
regionManager.RequestNavigate("Module1RegionName", new Uri("DependentModuleView", UriKind.Relative));
//or resolve the view and activate it
var view = serviceLocator.GetInstance<DependentModuleView>();
var region = regionManager.Regions["Module1RegionName"];
region.Activate(view);
regionManager.RequestNavigate(“moduleregionname”,新Uri(“DependentModuleView”,UriKind.Relative));
//或者解析视图并激活它
var view=serviceLocator.GetInstance();
var region=regionManager.Regions[“Module1RegionName”];
区域。激活(视图);
至于模块之间的通信,您有几个选项。阅读了解更多信息。,感谢您的帮助。但我在尝试解析视图时出错。IModule.Initialize中的此代码引发异常:
ServiceLocator.Current.GetInstance()代码>异常:尝试获取LoaderTabView类型的实例时发生激活错误,键“”视图类:[Export(“LoaderTabView”)]公共部分类LoaderTabView:UserControl
我发现了错误。我应该使用[Export]公共部分类LoaderTabView:UserControl
而不是[Export](“LoaderTabView”)]公共部分类LoaderTabView:UserControl
@Grigory我很高兴你能解决这个问题。