c# - 拥有多个 DataContexts 是如何工作的?
问题描述
我正在构建一个应用程序,它在 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);
}
视图模型可以为视图提供许多这些属性。
当视图模型被实例化时,您将拥有执行数据访问并从数据库中获取数据的代码,并且您将通过您的属性公开它,以便视图可以数据绑定到它们。
推荐阅读
- reactjs - 在 foreach 中运行 firebase 请求,但希望等待结果继续进行(异步/等待不起作用)
- scheme - 从 If 条件调用函数
- node.js - 如何让 Pinterest API 接受我的重定向 URL?
- c# - 如何创建一组相关属性?
- mysql - 将数据从 Talend studio 加载到 Mysql 时出错
- python - 如何在一个 if 函数中测试 3 个变量?
- javascript - 如何在我的类组件中检测在功能组件中单击了哪个输入值?
- android - 实现 SharedPreferencesBackupHelper 的正确方法是什么?
- c - C程序中的浮点输出不正确
- reactjs - 在 React 组件中呈现表格存在问题