我在PRISM,C#中有一个应用程序,我想知道我是否可以执行以下操作:
我的应用程序底部有一个按钮栏,它充当我的导航区域。用户可以单击按钮A,弹出模块A的仪表板。
用户点击仪表板中的项目,然后他会进入有关该项目的详细信息页面。他正在进行一些改变,但他在此过程中收到了一封电子邮件。
他打开模块B并在模块B中创建一个新项目。
- >此时有2个实例打开,模块A的详细信息页面和模块B的添加页面。我希望用户也可以看到这个,因为模块A的按钮上方会有一个“1”
问题是,(如何)我可以用PRISM做到这一点。
TL;博士; PRISM是否支持多个实例化视图? (这是打开视图的“管理”,因此您可以选择打开哪个视图。)
我尝试使用谷歌搜索,但我找不到与之相关的任何内容(可能是因为我不确定如何调用它,所以我无法搜索它:/)
非常感谢任何信息,感谢您的时间。
答案 0 :(得分:2)
以下是关于如何在Prism中解决这个问题的简短介绍,包括指向MSDN令人难以置信的有用部分的链接:
Prism具有regions,它是可以托管一个或多个其他控件(您的视图)的控件的抽象。每个区域可以添加任意数量的视图,并且每个区域中最多只有一个视图处于活动状态。显示视图(包括它作为活动视图的含义)的方式取决于region adapter,{{3}}是Prism根据每个区域控制主机的类型自动创建的对象。
答案 1 :(得分:0)
添加到Jon的帖子。
您可能想要使用TabControl。如果您将PRISM的区域放入TABCOntrol中 - 您将能够将所有实例视为标签。
你可以在这里找到关于如何关闭标签的一些XAML的不错的样本: Menu service in Prism application CAL
因此,在“内部” - 如果默认情况下使用MEF导出它们,PRISM将具有单例视图/视图模型。如果将这些部件导出为NonShared - PRISM将在容器(MEF或Unity)中保留同一视图的多个版本。但是,使用按钮 - 您将无法获得特定的实例。
所以,使用TabControl作为这样的容器: Menu service in Prism application CAL
或者您可以在那里编写自己的区域适配器和跟踪实例。