I want to create a region with dynamic views(multiple views in one region). The region content need to be changed by ComboBox selection event(the comobox items are view instances). I want that a change in the ComboBox will change the view in the region by the selected view item.
My question what is the difference between :
MyView view= new MyView();
IRegion region = new Region();
region.Name="MyRegion";
regionManager.Regions.Add(region);
region.Add(view);
region.Activate(view);
To:
regionManager.RegisterViewWithRegion("MyRegion",type(MyView));
?
What is the best way to use dynamic regions?
Prism regions are essentially named placeholders within which views can be displayed. Any control in the application's UI can be a declared a region by simply adding a RegionName attached property to it, as shown here.
A region is a placeholder in the application UI into which modules are injected. You can mark a control as a region using any of the following approaches. Set the UIRegion. Region attached property. XAML.
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!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With