注释
此类 DataSet 和相关类是 2000 年代初的旧版 .NET Framework 技术,使应用程序能够在应用与数据库断开连接时处理内存中的数据。 这些技术对于使用户能够修改数据并将更改保留回数据库的应用特别有用。 尽管数据集是经过证实的成功技术,但新 .NET 应用程序的建议方法是使用 Entity Framework Core。 Entity Framework 提供了一种更自然的方式来将表格数据用作对象模型,并且具有更简单的编程接口。
可以通过将数据绑定到 WPF 控件向应用程序的用户显示数据。 若要创建这些数据绑定控件,可以将项从 “数据源 ”窗口拖动到 Visual Studio 中的 WPF 设计器。 本主题介绍可用于创建数据绑定 WPF 应用程序的一些最常见任务、工具和类。
有关如何在 Visual Studio 中创建数据绑定控件的常规信息,请参阅 将控件绑定到 Visual Studio 中的数据。 有关 WPF 数据绑定的详细信息,请参阅 数据绑定概述。
将 WPF 控件绑定到数据所涉及的任务
下表列出了通过将项从 “数据源 ”窗口拖动到 WPF 设计器来完成的任务。
| 任务 | 详细信息 |
|---|---|
| 创建新的数据绑定控件。 将现有控件绑定到数据。 |
将 WPF 控件绑定到数据集 |
| 创建在父子关系中显示相关数据的控件:当用户在一个控件中选择父数据记录时,另一个控件显示所选记录的相关子数据。 | 在 WPF 应用程序中显示相关数据 |
| 创建“查找表”,此表根据一个表的外键字段的值显示另一个表中的信息。 | 在 WPF 应用程序中创建查阅表 |
| 将控件绑定到数据库中的图像。 | 将控件绑定到数据库中的图片 |
有效的投放目标
只能将“数据源”窗口中的项拖动到 WPF 设计器中的有效放置目标。 有两种主要的有效放置目标:容器和控件。 容器是通常包含控件的用户界面元素。 例如,网格是容器,窗口也是如此。
生成的 XAML 和代码
将项从 “数据源 ”窗口拖动到 WPF 设计器时,Visual Studio 将生成定义新的数据绑定控件的 XAML(或将现有控件绑定到数据源)。 对于某些数据源,Visual Studio 还会在代码隐藏文件中生成代码,以使用数据填充数据源。
下表列出了 Visual Studio 在 “数据源 ”窗口中为每种类型的数据源生成的 XAML 和代码。
| 数据源 | 生成将控件绑定到数据源的 XAML | 生成使用数据填充数据源的代码 |
|---|---|---|
| 数据集 | 是的 | 是的 |
| 实体数据模型 | 是的 | 是的 |
| 服务 | 是的 | 否 |
| 物体 | 是的 | 否 |
数据集
将表或列从 “数据源 ”窗口拖动到设计器时,Visual Studio 将生成执行以下作的 XAML:
将数据集和新的 CollectionViewSource 添加到将项拖至的容器的资源中。 CollectionViewSource该对象可用于在数据集中导航和显示数据。
为控件创建数据绑定。 如果将项拖动到设计器中的现有控件,XAML 会将该控件绑定到该项。 如果将项拖动到容器中,XAML 将创建为拖动的项选择的控件,并将该控件绑定到该项。 控件在一个新 Grid控件内创建。
Visual Studio 还会对后台代码文件进行以下更改:
- Loaded为包含控件的 UI 元素创建事件处理程序。 事件处理程序使用数据填充表,从容器的资源中检索 CollectionViewSource 数据,然后将第一个数据项创建为当前项。 Loaded如果事件处理程序已存在,Visual Studio 会将此代码添加到现有事件处理程序。
实体数据模型
将实体或实体属性从 数据源 窗口拖动到设计器时,Visual Studio 将生成执行以下作的 XAML:
将新的 CollectionViewSource 添加到将项拖至的容器的资源中。 CollectionViewSource该对象可用于在实体中导航和显示数据。
为控件创建数据绑定。 如果将项拖动到设计器中的现有控件,XAML 会将该控件绑定到该项。 如果将项拖动到容器中,XAML 将创建为拖动的项选择的控件,并将该控件绑定到该项。 控件在一个新 Grid控件内创建。
Visual Studio 还会对后台代码文件进行以下更改:
添加一种新方法,该方法返回对拖动到设计器中的实体(或包含拖动到设计器中的属性的实体)的查询。 新方法具有名称
Get<EntityName>Query,其中\<EntityName>实体的名称。Loaded为包含控件的 UI 元素创建事件处理程序。 事件处理程序调用
Get<EntityName>Query该方法以使用数据填充实体,从容器的资源中检索 CollectionViewSource ,然后将第一个数据项设置为当前项。 Loaded如果事件处理程序已存在,Visual Studio 会将此代码添加到现有事件处理程序。
服务业
将服务对象或属性从 数据源 窗口拖动到设计器时,Visual Studio 将生成创建数据绑定控件的 XAML(或将现有控件绑定到对象或属性)。 但是,Visual Studio 不会生成使用数据填充代理服务对象的代码。 必须自行编写此代码。 有关演示如何执行此作的示例,请参阅 将 WPF 控件绑定到 WCF 数据服务。
Visual Studio 生成的 XAML 执行以下操作:
将新的 CollectionViewSource 添加到将项拖至的容器的资源中。 CollectionViewSource该对象可用于在服务返回的对象中导航和显示数据。
为控件创建数据绑定。 如果将项拖动到设计器中的现有控件,XAML 会将该控件绑定到该项。 如果将项拖动到容器中,XAML 将创建为拖动的项选择的控件,并将该控件绑定到该项。 控件在一个新 Grid控件内创建。
对象
将对象或属性从 数据源 窗口拖动到设计器时,Visual Studio 将生成创建数据绑定控件的 XAML(或将现有控件绑定到对象或属性)。 但是,Visual Studio 不会生成代码以使用数据填充对象。 必须自行编写此代码。
注释
自定义类必须是公共类,默认情况下,具有不带参数的构造函数。 它们不能是语法中有“点”的嵌套类。 有关详细信息,请参阅 WPF 的 XAML 和自定义类。
Visual Studio 生成的 XAML 执行以下作用:
将新的 CollectionViewSource 添加到将项拖至的容器的资源中。 CollectionViewSource该对象可用于在对象中导航和显示数据。
为控件创建数据绑定。 如果将项拖动到设计器中的现有控件,XAML 会将该控件绑定到该项。 如果将项拖动到容器中,XAML 将创建为拖动的项选择的控件,并将该控件绑定到该项。 控件在一个新 Grid控件内创建。
另请参阅
- 将控件绑定到 Visual Studio 中的数据