MVVM& Caliburn:更换所有屏幕?

时间:2011-04-04 14:07:13

标签: c# .net mvvm caliburn.micro

我是MVVM的新手,并决定在我当前的项目中使用Caliburn和MEF。该项目基本上是一个基于所选产品托管屏幕和工作流程的框架。当用户选择产品时,我需要将所有当前屏幕换成与所选产品相关的屏幕。显然,这必须以模块化方式完成,以便可以根据需要插入或移除产品及其相关屏幕。

我不认为这超出了Caliburn的范围,但我不确定如何处理它。任何人都可以提供一些有关如何实现这一目标的见解吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点,具体取决于每种产品类型是否具有唯一的导航,或者每种产品之间是否存在共性。

例如,您可以使用Product类型来实现IProduct接口(标有InheritedExport属性)。这些产品类型中的每一种也可以从Conductor类型派生,并且可以包含它们需要显示的屏幕(项目)列表。

ShellViewModel(可以是Conductor<IScreen>.Collection.OneActive类型)可以维护MEF导入的IProduct的集合。完成导入后,此集合可用于填充ShellViewModel的{​​{1}}集合,该集合绑定到产品列表框供用户选择。

当用户从列表框中进行选择时,Items可以在所选产品上调用ShellViewModel

事实上,如果你给ListBox命名为ActivateItem,那么当你在列表中选择一个项目时,Caliburn.Micro将自动设置Items,因此活动项目将是设置为相应的产品屏幕。

您的ShellView.xaml将包含名为ActiveItem的{​​{1}},以显示当前所选的产品(指挥)视图。

相关问题