C# 在WPF C中设置多个DataContext#

C# 在WPF C中设置多个DataContext#,c#,wpf,xaml,mvvm,datacontext,C#,Wpf,Xaml,Mvvm,Datacontext,如何设置多个数据上下文?我有Model和ViewModel,例如,我可以在Windows.DataContext中用XAML编写一个数据上下文 <Window.DataContext> <v:FacebookViewModel/> </Window.DataContext> 然后在构造函数中或单击按钮,我可以只编写\u faceViewModel=(FacebookViewModel)this.DataContext。这将设置dataContex

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

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

然后在构造函数中或单击按钮,我可以只编写
\u faceViewModel=(FacebookViewModel)this.DataContext。这将设置dataContext


我的问题:我有两个ViewModel,我想,只要点击一个按钮,或者如果你有更好的想法,为我的第二个ViewModel TwitterViewModel更改datacontext-怎么做?我现在正在学习WPF,在这方面我是个新手…

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

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  {}
我相信它会比改变数据上下文更快