1

我有一个视图(MainView),其中包含一种主要内容区域(MainContent)。View 由相应的 ViewModel (MainViewModel) 支持。当然,主要内容会根据应用程序的当前状态发生变化,并在 ViewModel 中表示为属性 (CurrentPrimaryViewModel)。MainContent 的内容绑定到 XAML 中的 CurrentPrimaryViewModel,如下所示:

Content="{Binding Path=CurrentPrimaryViewModel}"

有一个 ResourceDictionary 包含一堆 ViewModel->View 映射 DataTemplates。因此,如果 CurrentPrimaryViewModel 是 XViewModel 类型,它会解析为 XView。

这一切都有效,有点。

问题是每次 CurrentPrimaryViewModel 更改时都会创建一个新视图。我想要的是适当映射的 View 只需将其 DataContext 更改为正确的 ViewModel,然后让该 View 成为 MainContent。基本上像 CardStack?来自 Java 的布局,或者没有可见选项卡的 TabControl。

处理这种情况的适当技术是什么?我是否只需要在 MainContent 包装器下创建各种视图并切换它们的可见性或 Z 顺序?这有一个好的模式吗?为了实现这一点,在 MainView 和 MainViewModel 之间应该绑定什么?

4

1 回答 1

0

AFAIK 没有控制可以做到这一点。然而,在我看来,这样做会非常容易(你知道,无知是幸福的)。您需要做的就是创建一个自定义DataTemplateSelector来缓存 ContentControls 的模板。

于 2010-07-02T14:57:23.587 回答