在 Visual Studio 中将 WPF 控件绑定到数据
发布日期: 2016年7月
通过将数据绑定到 WPF 控件,可以向应用程序的用户显示数据。 若要创建这些数据绑定控件,您可以在 **中将WPF 设计器“数据源”**窗口上的项拖动到 Visual Studio上。 本主题将介绍一些您可用于创建数据绑定 WPF 应用程序的最常见的任务、工具和类。
有关如何在 Visual Studio 中创建数据绑定控件的一般信息,请参阅在 Visual Studio 中将控件绑定到数据。 有关 WPF 数据绑定的详细信息,请参阅数据绑定概述。
将 WPF 控件绑定到数据所涉及的任务
下表列出了可以通过将项从**“数据源”**窗口拖到 WPF 设计器中来完成的任务。
任务 | 更多信息 |
---|---|
新建数据绑定控件。 将现有控件绑定到数据。 |
如何:在 Visual Studio 中将 WPF 控件绑定到数据 |
创建按父子关系显示相关数据的控件:当用户选择一个控件中的父数据记录时,另一个控件将显示所选记录的相关子数据。 | 如何:在 WPF 应用程序中显示相关数据 |
创建一个查找表,此表根据一个表的外键字段的值显示另一个表中的信息。 | 如何:在 WPF 应用程序中创建查找表 |
将控件绑定到数据库中的图像。 | 如何:将控件绑定到数据库中的图片 |
有效放置目标
只能将**“数据源”**窗口中的项拖动到 WPF 设计器中的有效放置目标。 有两种主要的有效放置目标:容器和控件。 容器是通常包含控件的用户界面元素。 例如,网格是容器,窗口也是容器。
生成的 XAML 和代码
将**“数据源”**窗口中的项拖到 WPF 设计器中时,Visual Studio 将生成定义新的数据绑定控件(或将现有控件绑定到数据源)的 XAML。 对于某些数据源,Visual Studio 还将在代码隐藏文件中生成用数据填充数据源的代码。
下表列出了 XAML 为Visual Studio“数据源”窗口中的每种类型的数据源生成的 和代码。
数据源 | 生成将控件绑定到数据源的 XAML | 生成用数据填充数据源的代码 |
---|---|---|
数据集 | 是 | 是 |
实体数据模型 | 是 | 是 |
服务 | 是 | No |
对象 | 是 | No |
数据集
将表或列从**“数据源”**窗口拖到设计器中时,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 还将对代码隐藏文件做出以下更改:
添加一种新方法,该方法返回对拖动到设计器中的实体(或包含拖动到设计器中的属性的实体)的查询。 该新方法的名称为 GetEntityNameQuery,其中 EntityName 是该实体的名称。
为包含该控件的 Loaded 元素创建 UI 事件处理程序。 该事件处理程序调用 GetEntityNameQuery 方法,以用数据填充该实体,从容器的资源中检索 CollectionViewSource,然后使第一个数据项成为当前数据项。 如果已存在 Loaded 事件处理程序,则 Visual Studio 会将此代码添加到现有的事件处理程序中。
服务
将某个服务对象或属性从**“数据源”**窗口拖到设计器中时,Visual Studio 将生成创建数据绑定控件(或将现有控件绑定到该对象或属性)的 XAML。 但是,Visual Studio 不会生成用数据填充代理服务对象的代码。 您必须自己编写此代码。 有关演示如何执行此操作的示例,请参阅演练:将 WPF 控件绑定到 WCF 数据服务。
Visual Studio 将生成执行以下操作的 XAML:
将新的 CollectionViewSource 添加到将项拖至的容器的资源中。 CollectionViewSource 是一个对象,它可用于导航和显示服务返回的对象中的数据。
为控件创建数据绑定。 如果将项拖动到设计器中的一个现有控件上,则 XAML 会将该控件绑定到该项。 如果将项拖动到容器中,则 XAML 将创建为所拖动的项选择的控件,并将该控件绑定到该项。 将在新的 Grid 内创建该控件。
对象
将某个对象或属性从**“数据源”**窗口拖到设计器中时,Visual Studio 将生成创建数据绑定控件(或将现有控件绑定到该对象或属性)的 XAML。 但是,Visual Studio 不会生成用数据填充对象的代码。 您必须自己编写此代码。
备注
自定义类必须是公共的且具有默认的无参数构造函数。 它们不能是其语法中具有“dot”的嵌套类。 有关详细信息,请参阅 XAML 及 WPF 的自定义类。
Visual Studio 将生成执行以下操作的 XAML:
将新的 CollectionViewSource 添加到将项拖至的容器的资源中。 CollectionViewSource 是可用于导航和显示对象中的数据的对象。
为控件创建数据绑定。 如果将项拖动到设计器中的一个现有控件上,则 XAML 会将该控件绑定到该项。 如果将项拖动到容器中,则 XAML 将创建为所拖动的项选择的控件,并将该控件绑定到该项。 将在新的 Grid 内创建该控件。
请参阅
如何:在 Visual Studio 中将 WPF 控件绑定到数据
如何:在 WPF 应用程序中创建查找表
如何:在 WPF 应用程序中显示相关数据
将 WPF 控件绑定到实体数据模型
演练:将 WPF 控件绑定到数据集
演练:将 WPF 控件绑定到 WCF 数据服务
演练:在 WPF 应用程序中显示相关数据
“数据源”窗口
数据源概述