【发布时间】:2011-05-09 21:19:01
【问题描述】:
我开始使用 MEF 和 WPF 首次涉足 Prism v4/MVVM 世界。我已经成功构建了一个 shell,并且使用 MEF,我能够发现和初始化模块。但是,我不确定为这些模块公开的视图提供导航的正确方法。
例如,假设其中一个模块公开了三个视图,我想在菜单控件上显示到这些视图的导航。到目前为止,我已经成功地公开了一个基于MenuItem 的视图,并且这个MenuItem 包含子MenuItem 控件,从而提供了一个可以使用的命令层次结构。太好了。
问题是,这感觉不对。我现在在我的模块中声明导航(以及外壳)必须支持使用菜单。如果我想改用ToolBar 甚至Ribbon 怎么办。然后我将不得不更改我的所有模块以公开外壳的相应控件类型。
我环顾四周,在一些网站上提到使用“服务”来提供导航,在模块初始化期间,导航选项被添加到服务中,而该服务又被 shell 用来显示这个以它想要的任何格式导航(ToolBar、TreeView、Ribbon、MenuItem 等) - 但我找不到任何实际这样做的例子。
为了透视所有这些,我最终希望能够从菜单和/或其他导航控件(可能是Ribbon)中选择视图,然后在 TabControl 中按需打开这些视图。我已经能够在模块初始化时在TabControl 中创建视图,现在我需要下一步。
我需要知道的是:什么是公开导航选项的正确方法,而不是坚持由 shell 支持特定控件,如果服务是要走的路,那么如何有人会将其放在 Prism/MVVM 模式中吗?
提前感谢您提供的任何见解。
【问题讨论】:
标签: wpf navigation prism mef