Dockpanel的动态底部作为使用MVVM选择的Ribbonpage的功能

时间:2014-12-23 07:29:44

标签: c# wpf devexpress mvvm-light devexpress-wpf

我目前在主窗口上有一个Ribboncontrol。在Ribboncontrol上有几个RibbonPages,根据选择的RibbonPage,我想在RibbonControl下面显示一个不同的IDE布局,以满足所选RibbonPage的需要。

我的方法是否正确,我为每个IDE布局创建了不同的视图/视图模型,并且对于所选择的每个不同的RibbonPage,是否会使用相应的视图/视图模型?我喜欢使用这种方法,因为我不需要在views / viewmodels之间进行通信,因为每个RibbonPage中的功能都是自包含的。

每个视图都是UserControl,封装了DockLayoutManager。我在下面添加了一些截图(SS1 = MainWindow,我要在其上加载不同的视图; SS2 =代表UserControl的视图,后者代表一个DockLayoutManager,包含所有相关的LayoutPanels,DocumentPanels,....)

问题:我将如何实现这一点,并且这是一个可行的解决方案,可以根据所选的RibbonPage显示不同的视图?

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

通常显示与RibbonControl的不同功能和/或标签相关的不同视图页面。通常,您有一个基本视图模型类,您的所有视图模型都会扩展,并且在父视图模型中具有该类型的属性...让我们称之为YourViewModelProperty。要更改视图,您只需要为该属性设置新的视图模型:

YourViewModelProperty = new SomeDerivedViewModel()

您可以在UserControl中声明的DataTemplate中将每个App.xaml与其相关的视图模型相关联。通过这种方式,它们将全部可用于应用程序中的每个视图。您可以在我对Stack Overflow上的WPF - automatic view resolving for view model问题的回答中找到有关此方法的更多信息。


更新>>>

我对WPF MVVM navigate views问题的回答中提供了更好的解释。