我想在WPF MVVM应用程序中实现以下分层导航模型:

ShellView
    Page1View
       Subpage1View
           Subpage2View
       Subpage3View
    Page2View
        ...


这意味着在Shellview上,我具有用于激活/禁用Page1View和Page2View的按钮。在Page1View上具有用于激活Subpage1View和Subpage3View的按钮,而Subpage1View具有用于激活Subpage2View的按钮。

子页面应显示在哪里?导航模型是否应该精确地映射到视图结构?我的意思是,我在ShellView上有一个ContentControl(名为ActiveItem),在激活时会在其中显示Page1View和Page2View。 Subpage1View应该显示在Shell的ActiveItem ContentControl还是父视图(Page1View)上?


如果我应该在ShellView上显示子页面,那么如何正确激活它?因为激活它的按钮不在Page1View上,而在外壳上。
如果要在父视图(Page1View)上显示子页面,则必须在Page1View上创建一个ActiveItem ContentControl并在需要之前将其隐藏。怎么样 ?另外,我猜父视图滚动条可能会成为问题。


请指教!

使用Caliburn.Micro 1.3,.NET 4,WPF。

谢谢!

最佳答案

我一起演示了。我不确定这是否正是您要的内容。要记住的是Screens,并且Conductors可以包含Screens和/或Conductors。因此嵌套或进行复杂的屏幕合成非常简单。

此示例具有一个带有2个按钮的ShellView和一个ContentControlPage1ViewModel也有2个按钮和一个ContentControl

单击Page1Page2上的ShellView按钮将激活相应的Page。激活Page后,也是如此,单击SubPage1SubPage2会激活相应的SubPage

https://bitbucket.org/dbeattie/cmwpfnavsample/src

10-08 13:24