我开始我的第一次进入Prism v4/MVVM世界与MEF & WPF。我成功地构建了一个shell,使用MEF,我能够发现和初始化模块。然而,我不确定导航到这些模块公开的视图的正确方式。棱镜/ MVVM(MEF/WPF):暴露导航[菜单例如]从模块
例如,假设其中一个模块公开三个视图,我想在菜单控件上显示导航到这些视图。到目前为止,我已经成功地公开了一个基于MenuItem
的视图,并且此MenuItem
包含子控件MenuItem
,因此提供了可以使用的命令级别。大。
事情是,这感觉不对。我现在在我的模块中指出导航(因此shell)必须支持菜单的使用。如果我想更改为使用ToolBar
甚至Ribbon
,该怎么办?然后,我将不得不改变我的所有模块,以暴露shell的相应控件类型。
我环顾四周,在使用“服务”提供导航的某些网站上提到,因此在模块初始化期间,导航选项被添加到服务中,而服务又被shell使用来显示此导航以任何格式(ToolBar
,TreeView
,Ribbon
,MenuItem
等) - 但我找不到任何实际做到这一点的例子。我最终希望能够从菜单和/或其他导航控件(可能是Ribbon
)中选择视图,然后在TabControl中按需打开这些视图。我已经尽可能在模块初始化时创建了TabControl
中的视图,现在我需要下一步。
我需要知道的是:以这种方式公开导航选项的正确方法是什么,而不是坚持支持shell的特定控件,并且如果服务是要走的路如何将这些结合到Prism/MVVM模式中。
在此先感谢您提供的任何见解。
我有点像这样,因为它是一个完全通用的选项,让shell决定它将如何显示项目。也就是说,我对这个问题有了进一步的思考,并且实际上已经走过了另一条路线,我将其作为一个单独的答案来记录。谢谢。 – 2010-11-21 13:05:09
不要忘记你可以制作一个MenuItemViewModel适合MenuItems(可检查或有子项目)。你将不得不做出更具体的界面。但这是一个例子。玩的开心。 – SandRock 2010-11-21 13:26:33