首页 > 解决方案 > 拥有多个 DataContexts 是如何工作的?

问题描述

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

class VMContainer
{
    public ViewModel1 VM1 {get; set;}
    public ViewModel2 VM2 {get; set;}
}

但是,我找不到任何可以进一步解释这是做什么的东西。从我的角度来看,似乎从未有过需要数据的地方。更进一步,我无法理解如何创建一个调用,将我需要的所有数据集返回到一个对象中。任何人都可以解释这是如何工作的或指导我阅读一篇解释将多组数据作为视图的数据上下文的文章吗?

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

谢谢。

标签: c#wpfmvvmdatacontext

解决方案


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

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

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

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

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

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

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


推荐阅读