C# 在WPF C中设置多个DataContext#
如何设置多个数据上下文?我有Model和ViewModel,例如,我可以在Windows.DataContext中用XAML编写一个数据上下文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
<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 {}
我相信它会比改变数据上下文更快