0

如何设置多个dataContexts?我有 Model 和 ViewModel -例如,我可以在 Windows.DataContext 中的 XAML 中编写一个数据上下文

<Window.DataContext>
    <v:FacebookViewModel/>
</Window.DataContext>

然后在构造函数或按钮上单击我可以写_faceViewModel = (FacebookViewModel)this.DataContext;. 这将设置 dataContext。

我的问题:我有 2 个 ViewModel,我想通过单击按钮或者如果您有更好的主意,更改我的第二个 ViewModel TwitterViewModel 的数据上下文 - 怎么做?我现在正在学习 WPF,对此我真的很陌生...

4

1 回答 1

0

您可以使用 DataContext 属性以编程方式更改它。我认为更好的方法是为您的 ViewModel 编写一个 DataTemplates 并将它们设置在所需的容器中(如果您的 viewmodel 具有不同的外观)。如果您的虚拟机具有相同的外观,那么您可能应该考虑在一个视图模型后面封装不同的逻辑。

class VM 
{
  private IVMImplementation manager = null;

  public VM(IVMImplementation manager) { this.manager = manager; }

  public SetManager(IVMImplementation manager) { this.manager = manager; }
}
class TwitterVMManager : IVMImplementation  {}
class FacebookVMManager : IVMImplementation  {}

我相信它会比更改数据上下文更快。

于 2012-05-22T02:52:18.083 回答