在 Visual Studio 中将 WPF 控件绑定到数据

通过将数据绑定到 WPF 控件,可以向应用程序的用户显示数据。 若要创建这些数据绑定控件,您可以在 Visual Studio 中将**“数据源”**窗口上的项拖动到 WPF 设计器上。 本主题将介绍一些您可用于创建数据绑定 WPF 应用程序的最常见的任务、工具和类。

有关如何在 Visual Studio 中创建数据绑定控件的一般信息,请参见在 Visual Studio 中将控件绑定到数据。有关 WPF 数据绑定的更多信息,请参见数据绑定概述

将 WPF 控件绑定到数据所涉及的任务

下表列出了可以通过将项从**“数据源”**窗口拖到 WPF 设计器中来完成的任务。

任务

更多信息

新建数据绑定控件。

将现有控件绑定到数据。

如何:在 Visual Studio 中将 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 还将对代码隐藏文件做出以下更改:

  • 为包含该控件的 UI 元素创建 Loaded 事件处理程序。 该事件处理程序用数据填充表,从容器的资源中检索 CollectionViewSource,然后使第一个数据项成为当前项。 如果已存在 Loaded 事件处理程序,则 Visual Studio 会将此代码添加到现有的事件处理程序中。

实体数据模型

将实体或实体属性从**“数据源”**窗口拖到设计器中时,Visual Studio 将生成执行以下操作的 XAML:

  • 将新的 CollectionViewSource 添加到将项拖至的容器的资源中。 CollectionViewSource 是可用于导航和显示实体中的数据的对象。

  • 为控件创建数据绑定。 如果将项拖动到设计器中的一个现有控件上,则 XAML 会将该控件绑定到该项。 如果将项拖动到容器中,则 XAML 将创建为所拖动的项选择的控件,并将该控件绑定到该项。 将在新的 Grid 内创建该控件。

Visual Studio 还将对代码隐藏文件做出以下更改:

  • 添加一种新方法,该方法返回对拖动到设计器中的实体(或包含拖动到设计器中的属性的实体)的查询。 该新方法的名称为 Get实体名称Query,其中实体名称 是实体的名称。

  • 为包含该控件的 UI 元素创建 Loaded 事件处理程序。 该事件处理程序调用 Get实体名称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 不会生成用数据填充对象的代码。 您必须自己编写此代码。

提示

自定义类必须是公共的且具有默认的无参数构造函数。 它们不能是其语法中具有“dot”的嵌套类。 有关更多信息,请参见 XAML 及 WPF 的自定义类

Visual Studio 将生成执行以下操作的 XAML:

  • 将新的 CollectionViewSource 添加到将项拖至的容器的资源中。 CollectionViewSource 是可用于导航和显示对象中的数据的对象。

  • 为控件创建数据绑定。 如果将项拖动到设计器中的一个现有控件上,则 XAML 会将该控件绑定到该项。 如果将项拖动到容器中,则 XAML 将创建为所拖动的项选择的控件,并将该控件绑定到该项。 将在新的 Grid 内创建该控件。

请参见

任务

如何:在 Visual Studio 中将 WPF 控件绑定到数据

如何:在 WPF 应用程序中创建查找表

如何:在 WPF 应用程序中显示相关数据

演练:将 WPF 控件绑定到实体数据模型

演练:将 WPF 控件绑定到数据集

演练:将 WPF 控件绑定到 WCF 数据服务

演练:在 WPF 应用程序中显示相关数据

参考

“数据源”窗口

概念

数据源概述