我有一个View(MainView),其中包含一种主要内容区域(MainContent)。 View由相应的ViewModel(MainViewModel)支持。当然,主要内容基于应用程序的当前状态而变化,并在ViewModel中表示为属性(CurrentPrimaryViewModel)。 MainContent的内容绑定到XAML中的CurrentPrimaryViewModel,如下所示:
Content="{Binding Path=CurrentPrimaryViewModel}"
有一个ResourceDictionary包含一堆ViewModel-> View映射DataTemplates。因此,如果CurrentPrimaryViewModel的类型为XViewModel,则它将解析为XView。
这一切都有效。
问题是每次CurrentPrimaryViewModel更改时都会创建一个新的View。我想要的是适当映射View,只需将DataContext更改为正确的ViewModel,然后将该View变为MainContent。基本上像CardStack? Java中的布局,或没有可见选项卡的TabControl。
处理这种情况的适当技巧是什么?我是否只需要在MainContent包装器下创建各种视图并切换其可见性或Z-Order?这有一个很好的模式吗? MainView和MainViewModel之间应该绑定什么才能实现这个目标?
答案 0 :(得分:0)
AFAIK没有可以做到这一点的控制。然而,在我看来,这样做会非常容易(无知是幸福,你知道)。您需要做的就是创建一个自定义DataTemplateSelector,用于缓存ContentControls的模板。