拥有多个DataContext如何工作?

问题描述

我正在构建一个应用程序,该应用程序在MainWindow视图中具有多个选项卡,每个选项卡包含几个DataGrid和不同的数据位。我整周都在研究如何将DataContext设置为多个表/对象/查询。我似乎可以从几个不同的来源找到唯一的答案,就是像这样创建一个viewmodel容器:

class VMContainer
{
    public viewmodel1 VM1 {get; set;}
    public viewmodel2 VM2 {get; set;}
}

但是,我找不到任何能进一步解释其作用的东西。从我的角度来看,似乎从来没有出现过对数据的呼吁。更进一步,我无法理解如何创建将我需要的所有数据集返回到一个对象的调用。任何人都可以解释这是如何工作的,或者可以引导我进入一篇文章,该文章解释将多组数据作为视图的数据上下文吗?

编辑:如何返回数据集的数据集?

谢谢。

解决方法

使用选项卡控件,通常您将为每个选项卡的内容看到一个单独的视图,并且每个视图都将具有一个随附的视图模型。

视图模型通过数据绑定为视图提供需要显示的数据/属性。

单个视图模型可以提供许多不同的数据集。当您提到数据集时,很有可能在视图模型中将其表示为ObservableCollection<T>属性。

这是使用实现INotifyPropertyChanged接口的MVVM框架提供的其中一个属性的简单示例。

private ObservableCollection<MyDataType> myDataSet1;
public ObservableCollection<MyDataType> MyDataSet1
{
    get => myDataSet1;
    set => SetProperty(ref myDataSet1,value);
}

视图模型可以为视图提供许多这些属性。

实例化视图模型时,您将具有执行数据访问并从数据库中获取数据的代码,并且将通过属性公开它,以便视图可以将数据绑定到它们。