在 WPF C# 中设置多个数据上下文

本文关键字:数据 上下文 设置 WPF | 更新日期: 2023-09-27 18:34:49

如何设置多个数据上下文?我有模型和视图模型 - 例如,我可以在Windows.DataContext中只在XAML中编写一个数据上下文。

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

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

的问题:我有 2 个 ViewModels,我想,只需单击一个按钮,或者如果您有更好的主意,就可以更改我的第二个 ViewModel TwitterViewModel 的数据上下文 - 怎么办?我现在正在学习 WPF,我在这方面真的很陌生......

在 WPF C# 中设置多个数据上下文

可以使用 DataContext 属性以编程方式更改它。我认为更好的方法是为您的视图模型编写一个数据模板并将它们设置在所需的容器中(如果您的视图模型具有不同的外观(。如果您的 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  {}

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