View如何在Prism中得到解决

时间:2016-05-06 15:01:46

标签: c# silverlight prism

我是使用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或其他一些概念。

我可以知道,这是怎么回事,所以我能够理解更多。

提前致谢。

1 个答案:

答案 0 :(得分:1)

答案1:它解析一个视图,通常你想用一些键注册视图,以便能够区分它们。

答案2:反过来说,应用程序中存在区域,模块使用它们。当然,他们需要以某种方式知道该地区的名称。

未分类的评论:

  • RegisterType<ISomeInterface, OneOfItsImplementations>()位于Microsoft.Practices.Unity命名空间中,因此请添加using Microsoft.Practices.Unity;以“看到出现的角撑”
  • 使用regionManager.RegisterViewWithRegion("MyRegion", typeof(AView))之类的内容使视图自动显示在区域中
  • 要切换区域中的视图,请查看prism的导航功能,例如RegisterTypeForNavigationRequestNavigate
  • 视图使用viewmodel,而不是相反。 viewmodel通常不知道该视图。