C# 在prism中注册一个区域和添加一个区域有什么区别?
我想创建一个具有动态视图的区域(一个区域中有多个视图)。区域内容需要通过组合框选择事件进行更改(组合框项目是视图实例)。我希望组合框中的更改将通过所选视图项更改区域中的视图 我的问题是:C# 在prism中注册一个区域和添加一个区域有什么区别?,c#,wpf,mvvm,prism,regions,C#,Wpf,Mvvm,Prism,Regions,我想创建一个具有动态视图的区域(一个区域中有多个视图)。区域内容需要通过组合框选择事件进行更改(组合框项目是视图实例)。我希望组合框中的更改将通过所选视图项更改区域中的视图 我的问题是: MyView view= new MyView(); IRegion region = new Region(); region.Name="MyRegion"; regionManager.Regions.Add(region); region.Add(view); region.Activate(v
MyView view= new MyView();
IRegion region = new Region();
region.Name="MyRegion";
regionManager.Regions.Add(region);
region.Add(view);
region.Activate(view);
致:
?
使用动态区域的最佳方法是什么?如果希望在同一区域中显示不同的视图,则需要使用或视图注入,这是您在第一种方法中使用的 将区域与视图关联,以便每次承载区域的控件成为可视树的一部分时,视图都会自动解析和显示
有关更多信息,请参见条目直接添加控件实例称为视图注入。 注册视图类型称为视图发现 为什么是发现?Prism使用当前的
ServiceLocator
从容器
中抓取实例(MEF、Unity,任意选择)。然后自动添加视图
发现更精简,因为所有视图都是惰性创建的(在需要时)。注入允许您进行一些高级合成(如范围区域),但您必须更加亲自动手
没有正确的答案,但为了学习prism,我会选择视图发现(
RegisterViewWithRegion
)。为了获得最佳效果,请使用常量保存区域名称 您不是在使用容器来注入实例吗?根据我的理解,如果使用在相关的视图类型上配置了单例注册的容器,这两个过程都将返回现有的视图。您可以在以下MSDN Prism Guide章节中找到更多信息:
有人吗?我真的需要解决它。我需要使用现有视图,而不是再次创建它们。这就是我需要使用第一个过程的原因…重用视图时要非常小心。单个视图实例只能在可视树中存在一次。你在使用MEF吗?我建议你只有在确定答案后才回答。一个快速的谷歌应该可以帮助你发现哪些是正确的。此外,解释你的建议,以及他们可能如何在他们的上下文中使用它。
regionManager.RegisterViewWithRegion("MyRegion",type(MyView));