更新:2007 年 11 月
提供对绑定定义的高级别访问,绑定将绑定目标对象(通常为 WPF 元素)的属性与任何数据源(例如数据库、XML 文件或包含数据的任何对象)连接起来。
命名空间:
System.Windows.Data 程序集:
PresentationFramework(在 PresentationFramework.dll 中)
用于 XAML 的 XMLNS:http://schemas.microsoft.com/winfx/xaml/presentation
Public Class Binding _
Inherits BindingBase
public class Binding : BindingBase
public ref class Binding : public BindingBase
public class Binding extends BindingBase
public class Binding extends BindingBase
<object property="{Binding declaration}"/>
- declaration
零个或多个用逗号 (,) 分隔的属性赋值子句。有关更多信息,请参见 绑定标记扩展。
Windows Presentation Foundation (WPF) 数据绑定为应用程序提供了一种简单、一致的数据表示和交互方法。通过数据绑定,您可以对两个不同对象的属性值进行同步。
若要建立绑定,请使用 Binding 类或一个从 BindingBase 继承的其他类。不论要绑定的对象和数据源的特性是什么,每个绑定都遵循下图所示的模型。
.png)
该图演示以下基本的 WPF 数据绑定概念。
每个绑定通常都具有四个组件:绑定目标对象、目标属性、绑定源,以及要使用的绑定源值的 Path。例如,如果希望将 TextBox 的内容绑定到 Employee 对象的 Name 属性,则目标对象是 TextBox,目标属性是 Text 属性,要使用的值是 Name,源对象是 Employee 对象。
目标属性必须为依赖项属性。这同时意味着无法绑定字段。UIElement 对象的大多数属性都是依赖项属性,而大多数依赖项属性(除了只读属性)默认情况下都支持数据绑定。(只有 DependencyObject 类型可以定义依赖项属性,所有 UIElement 对象都是从 DependencyObject 派生的。)
尽管图中并未指出,但请注意,绑定源对象并不限于自定义 CLR 对象。WPF 数据绑定支持 CLR 对象和 XML 形式的数据。举例来说,绑定源可以是 UIElement、任何列表对象、与 ADO.NET 数据或 Web 服务关联的 CLR 对象,也可以是包含 XML 数据的 XmlNode。
使用 Mode 属性可以指定数据流的方向。若要检测单向绑定或双向绑定中的源更改,源必须实现适当的属性更改通知机制,例如 INotifyPropertyChanged。有关示例,请参见如何:实现属性更改通知。UpdateSourceTrigger 属性指定源更新的执行时间。有关更多信息,请参见数据绑定概述中的“基本数据绑定概念”。
此示例演示如何创建简单的 Binding。
在此示例中,假设您具有一个字符串属性名为 PersonName 的 Person 对象。Person 对象是在名为 SDKSample 的命名空间中定义的。
下面的示例用值为 Joe 的 PersonName 属性来实例化 Person 对象。这是在 Resources 部分中完成的,系统会为该对象分配一个 x:Key。
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:src="clr-namespace:SDKSample"
SizeToContent="WidthAndHeight"
Title="Simple Data Binding Sample">
<Window.Resources>
<src:Person x:Key="myDataSource" PersonName="Joe"/>
...
</Window.Resources>
...
</Window>
若要绑定到 PersonName 属性,您需要执行以下命令:
<TextBlock Text="{Binding Source={StaticResource myDataSource}, Path=PersonName}"/>
因此,TextBlock 所显示的值为“Joe”。
有关完整示例,请参见简单绑定示例。
更多代码
System..::.Object
System.Windows.Markup..::.MarkupExtension
System.Windows.Data..::.BindingBase
System.Windows.Data..::.Binding
此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。
Windows Vista
.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。
.NET Framework
受以下版本支持:3.5、3.0
参考
其他资源