如何设置多个dataContexts?我有Model和ViewModel - 我可以在Windows.DataContext中的XAML中编写一个数据上下文,例如
<Window.DataContext>
<v:FacebookViewModel/>
</Window.DataContext>
然后在构造函数或按钮单击时我可以写_faceViewModel = (FacebookViewModel)this.DataContext;
。这将设置dataContext。
我的问题:我有2个ViewModel,我只想点击一个按钮或者你有更好的想法,为我的第二个ViewModel TwitterViewModel更改datacontext - 怎么做?我现在正在学习WPF,我真的很擅长...
答案 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更快..