使用Prism更改Silverlight中的区域视图

时间:2010-02-05 22:01:12

标签: c# silverlight mvvm prism

我一直在学习Prism和Silverlight,现在我正在尝试创建一个简单的应用程序但是遇到了麻烦......

我所拥有的是具有2个ContentControls的Shell,“MenuRegion”和“ContentRegion”。我希望它工作的方式是用户点击“MenuRegion”中的项目,然后app.Region视图将显示在ContentRegion中,替换以前的View中的所有View(所有视图都在他们自己的项目中,就好像由不同的人工作)。要在内容区域中显示的所有视图都不同。

我不知道如何使用Prism模型实现这一点(如果我愿意,我可以这样做,但View.cs中会有很多代码,并且希望以正确的方式执行此操作)。我发现的所有样本都使用Tab控件并立即加载所有模块,这不是我想要实现的。我应该学习一个特定的模式,或者你知道的任何一个例子可以指向我正确的方向吗?

1 个答案:

答案 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在视图模型构造函数中注入区域管理器。