What is the difference between register a region to adding a region in prism?

孤者浪人 提交于 2019-12-04 07:48:39

If you want a different views to be displayed in the same region, you need to use RequestNavigate or view injection which you have used in your first method

RegisterViewWithRegion will associate the Region with the view, so that every time the control where the region is hosted become part of the visual tree the view is automatically resolved and displayed.

See the msdn entry for more information

Adding a control instance directly is called view injection. Registering a view type is known as view discovery.

Why discovery? Prism uses the current ServiceLocator the grab an instance from the Container (MEF, Unity, whatever you choose). It then adds the view automagically.

Discovery is leaner as all your views are created lazily (when they are needed). Injection lets you do some advanced compositions (like scoped regions) but you have to be more hands-on.

There is no right answer but for learning prism i would go with view discovery (RegisterViewWithRegion). For best results, use constants to hold your region names!

Aren't you using a container in order to inject the instances? Based on my understanding, both procedures would return the existing View if using a container with a Singleton registration configured on the related View types. You can find more information on the following MSDN Prism Guide chapter:

Regarding both implementations, RegisterViewWithRegion() method is quite similar to the first implementation: It basically loads and adds the View into the Region from the container and it activates it. So the last View registered in the Region with this method would be the active one after every initialization completes. You may check this behaviour on the PrismLibrary solution.

Like Jimmy said, the code you described would be used only for loading each Region with the corresponding Views. Then, you would use RequestNavigate() method in order to activate the selected View already registered on the Region.

You can find more related information on the following MSDN Prism Guide chapter:

I hope this helped, regards.

First time i seen

type(MyView)

Maybe

typeof(MyView)

??

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!