在MVVM和WPF中重复使用菜单

4

我在想如何最好地在所有wpf窗口/视图之间共享菜单。

我的应用程序不太适合导航模型,因此可能会使用Ribbon控件。

我倾向于创建一个用户控件来制作菜单,并将其拖放到每个视图中,但我也看过Josh Smith的msdn文章,他加载了用户控件。

还有其他选项或已确立的最佳实践吗?

提前感谢。

2个回答

1

我最终实现的方式与Josh Smith类似,但我简化了一些东西。

所有视图都是用户控件,除了MainWindow。 MainWindow包含一个ContentTemplate,它绑定到一个属性,该属性保存对ViewModel中单个UserControl的引用。 然后,我有一个ApplicationController负责控制视图和ViewModel生命周期。 每个视图使用的ViewModel基类包含对IApplicationController的引用。 然后,MainWindowViewModel调用ApplicationController来加载新视图等。

对于这种方法仍不完全确定,因此欢迎任何进一步的建议。


0

这是我可能会尝试的方法:

  • 定义一个 ISharedMenu 接口
  • 创建一个使用 ISharedMenu 作为其 DataContext 的 UserControl。
  • 对于每个要使用共享菜单的 ViewModel,实现 ISharedMenu 接口。

感谢@jberger,我喜欢这种方法,已经可以想到另一种情况会用到它。但在这种情况下使用它的问题是,我必须在所有页面中重新实现导航逻辑,如果我使用Ribbon控件,那可能会涉及相当多的逻辑。 - PaulP
我理解你的困境(需要在所有页面上重新实现),但是我给出的答案的好处是逻辑只存在于一个地方,而不是每个页面都有。但如果它能够工作,那就使用你已经拥有的吧。 - Jake Berger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接