我一直在学习Prism和Silverlight,现在我正在尝试创建一个简单的应用程序但是遇到了麻烦......
我所拥有的是具有2个ContentControls的Shell,“MenuRegion”和“ContentRegion”。我希望它工作的方式是用户点击“MenuRegion”中的项目,然后app.Region视图将显示在ContentRegion中,替换以前的View中的所有View(所有视图都在他们自己的项目中,就好像由不同的人工作)。要在内容区域中显示的所有视图都不同。
我不知道如何使用Prism模型实现这一点(如果我愿意,我可以这样做,但View.cs中会有很多代码,并且希望以正确的方式执行此操作)。我发现的所有样本都使用Tab控件并立即加载所有模块,这不是我想要实现的。我应该学习一个特定的模式,或者你知道的任何一个例子可以指向我正确的方向吗?
答案 0 :(得分:1)
试一试。
使用RegionManager将视图添加到您的区域:
regionManager.AddToRegion("ContentRegion", new MyViews.View1());
然后,当您想要替换该视图时,您可以删除视图:
regionManager.Regions["ContentRegion"].Remove(view);
或者遍历区域中的视图并将其全部删除:
foreach (var view in regionManager.Regions["ContentRegion"].Views)
{
regionManager.Regions["ContentRegion"].Remove(view);
}
您的视图模型是放置此类代码的好地方。使用Unity在视图模型构造函数中注入区域管理器。