在WPF C#中设置多个DataContexts

时间:2012-05-22 00:11:27

标签: c# wpf xaml mvvm datacontext

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

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

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

我的问题:我有2个ViewModel,我只想点击一个按钮或者你有更好的想法,为我的第二个ViewModel TwitterViewModel更改datacontext - 怎么做?我现在正在学习WPF,我真的很擅长...

1 个答案:

答案 0 :(得分:0)

您可以使用DataContext属性以编程方式更改它。我认为更好的方法是为ViewModel编写一个DataTemplates并将它们设置在所需的容器中(如果viewmodel具有不同的外观)。如果你的vm有相同的外观,那么你可能会想到封装不同的逻辑隐藏一个视图模型。

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  {}

我相信它会比改变datacontext更快..