我想在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
和一个ContentControl
。 Page1ViewModel
也有2个按钮和一个ContentControl
。
单击Page1
或Page2
上的ShellView
按钮将激活相应的Page
。激活Page
后,也是如此,单击SubPage1
或SubPage2
会激活相应的SubPage
。
https://bitbucket.org/dbeattie/cmwpfnavsample/src