我是使用Prism的新手。我已经创建了一个示例应用程序来理解它。我有一些问题,它是如何工作的。
问题1:
public class HelloModuleCls : IModule { IRegionManager regionManager; IUnityContainer container; public void Initialize() { RegisterViewAndServices(); // Injecting occurs here if (regionManager.Regions.ContainsRegionWithName("ViewHolder")) { regionManager.Regions["ViewHolder"].Add ( ***container.Resolve().View*** ); } } protected void RegisterViewAndServices() { //since angular brace is not appearing, I am using ( , ).... container.RegisterType(IHelloView, HelloViewUC)(); container.RegisterType(IHelloViewModel, EmployeeVM)(); } } public class EmployeeVM : INotifyPropertyChanged, IHelloViewModel { public EmployeeVM(IHelloView targetview) { } }
点击该行后, container.Resolve()。查看 , VM的ctor,执行,视图类型被注入 param“targetview”。
1。那么,当这一行被击中时,幕后会发生什么......?
问题2: 项目名称: - HelloModule(启动Silverlight应用程序中引用的另一个Silvelight类库)
public class HelloModuleCls : IModule { public HelloModuleCls(IRegionManager rm, IUnityContainer um) { regionManager = rm; container = um; } }
(Shell.Xaml)(在启动Silverlight应用程序中)
<ContentControl Prism:RegionManager.RegionName="ViewHolder" Grid.Row="0">
</ContentControl>
此模块位于另一个项目中。我在启动项目中拥有Region。我已经看到,在HelloModuleCls的ctor中,在Startup项目中使用的区域得到了完美的注入......
2。那么,棱镜是如何通过这些区域的......就像是,一旦区域被创建,它就会被注入所有可用的模块ctor或其他一些概念。
我可以知道,这是怎么回事,所以我能够理解更多。
提前致谢。
答案 0 :(得分:1)
答案1:它解析一个视图,通常你想用一些键注册视图,以便能够区分它们。
答案2:反过来说,应用程序中存在区域,模块使用它们。当然,他们需要以某种方式知道该地区的名称。
未分类的评论:
RegisterType<ISomeInterface, OneOfItsImplementations>()
位于Microsoft.Practices.Unity
命名空间中,因此请添加using Microsoft.Practices.Unity;
以“看到出现的角撑”regionManager.RegisterViewWithRegion("MyRegion", typeof(AView))
之类的内容使视图自动显示在区域中RegisterTypeForNavigation
和RequestNavigate