WPF 数据绑定简介






2.64/5 (6投票s)
简单的例子来描述 WPF 数据绑定。
引言
任何听说过 WPF 的人都应该想知道什么是数据绑定
是的,我也觉得理解数据绑定有点困难,但是当我查看许多示例时,事情变得越来越清晰。
这篇文章将向您介绍数据绑定,您会发现使用数据绑定比使用通常的方式更容易
背景
什么是数据绑定?
来自 MSDN,
数据绑定是建立应用程序 UI 和业务逻辑之间连接的过程
好的,我想有些人可能在这里感到困惑。让我用一个简单的例子来解释。
我们有一个 TextBox 和 Label。每当 TextBox 中的文本更改时,Label 就会更新。因此,将 TextBox 视为应用程序 UI,将更新的值视为业务逻辑 - 在这里,我们更新 Label 以具有更新的值。
听起来类似于为 TextBox 拥有一个事件处理程序,每当文本更新时,更新 Label 的内容以在该事件处理程序中保存 TextBox 的值?是的,它完全相同,但是现在我们将使用数据绑定来完成此操作。
关于数据绑定,我还需要了解什么?
在演示数据绑定之前,需要熟悉一些事情。
- 为了建立绑定,我们使用 Binding 对象
- Binding 具有以下四个组成部分,
- 绑定目标组件
- 目标属性
- 绑定源组件
- 绑定源中值的路径
并且,
绑定流
如上图所示,
- 单向绑定会导致目标属性在源属性更新时自动更新
- 双向绑定会导致两者(源<->目标)
- 单向到源绑定会导致源属性在目标属性更新时自动更新
了解了一些关于(是的,只是一点点 )数据绑定的知识,让我们跳到示例中。
使用代码
这是我们要做的,
我们有一个 TextBox 和 Label。每当 TextBox 中的文本更改时,Label 就会更新
普通(常用)方法
下面的 XAML 代码,
<TextBox Name=“TextUnBound” TextChanged=“NotBoundTextChanged” />
<TextBlock Name=”TxtBlockUnBound” />
我们将在后端的代码 (C#) 中使用事件处理程序来完成我们的工作,
public void NotBoundTextChanged(Object obj, EventArgs eventargs)
{ TxtBlockBound.Text = TextUnBound.Text; }
上述方法是拥有一个事件处理程序并在该事件处理程序中完成我们的工作
WPF 方法
下面的 XAML 代码,
<TextBox Name=“TextBound” >Data Bound</TextBox>
<TextBlock Name=“TxtBlockBound” >
<TextBlock.Text>
<Binding ElementName=“TextBound” Path=“Text” />
</TextBlock.Text>
</TextBlock>
以上完成了我们的工作
很简单,不是吗?我们甚至没有使用任何后端代码
这里做了什么魔法?如前所述,我们为 TextBlock 的 Text 属性(这是我们的绑定目标属性)指定了一个 Binding 对象,以绑定到 Element TextBox 和 Path Text(这是我们的绑定源属性)。请记住,它是单向的,因此每当我们的源更新时,目标都会自动更新。
历史
2008 年 1 月 10 日 - 添加了该文章