WPF实现数据绑定基础整理
一、数据绑定概述
数据绑定是将应用程序的数据和 UI 元素连接起来的一种技术。在 WPF 中,数据绑定提供了一种声明性的方法,使 UI 层和业务逻辑层的代码更加分离。在 WPF 中,主要涉及以下几个绑定源和目标:
- 绑定源:通常是一个数据对象,例如类实例、集合或 XML 数据。
- 绑定目标:一般是一个 UI 元素的属性。
.数据绑定的核心元素
- Binding 对象:描述了源属性和目标属性之间的连接。
- Binding Target:通常是一个 DependencyProperty(依赖属性)。
- Binding Source:可以是任意对象。
- DataContext:数据上下文,通常用于为整个控件树提供绑定源的默认数据源。
- 数据转换:在源和目标之间转换数据,例如格式化显示数据。
二、实现数据对象绑定、数据集合绑定
1.对象绑定
WPF 中最简单的绑定是通过 XAML 使用 Binding 对象。它可以直接绑定属性到数据源。
<TextBlock Text="{Binding Name}" />
在这个例子中,假设 DataContext 是一个 Person 对象,则 Name 属性将被绑定到 TextBlock 的 Text 属性。
this.DataContext=new Person();
2. 绑定到集合
WPF 提供了对集合进行绑定的支持,通过 ItemsControl(如 ListBox, ComboBox)可以绑定并展示数据集合。
<ListBox ItemsSource="{Binding People}" DisplayMemberPath="Name"/>
People 是一个集合,例如 ObservableCollection<Person>。ListBox 会自动为集合中的每一项创建 ListBoxItem,并显示 Person 的 Name 属性。
三、实现数据绑定的方式
1.单向绑定
单向绑定是从源属性到目标属性的单向数据流。当数据源发生变化时,UI 会自动更新。默认情况下,绑定是单向的。
<TextBlock Text="{Binding Path=Name, Mode=OneWay}" />
2. 双向绑定
双向绑定允许源属性和目标属性之间相互更新。这通常用于用户输入控件,例如 TextBox。
<TextBox Text="{Binding Path=Name, Mode=TwoWay}" />
四、多绑定和绑定优先级
1.MultiBinding
有时候需要根据多个源来设置一个目标属性。这时可以使用 MultiBinding
<TextBlock> <TextBlock.Text> <MultiBinding StringFormat="{}{0} {1}"> <Binding Path="FirstName" /> <Binding Path="LastName" /> </MultiBinding> </TextBlock.Text> </TextBlock>
2.PriorityBinding
PriorityBinding 用于绑定多个数据源,但取第一个成功获取值的绑定。
<TextBox> <TextBox.Text> <PriorityBinding> <Binding Path="FirstChoice" /> <Binding Path="SecondChoice" /> </PriorityBinding> </TextBox.Text> </TextBox>
数据绑定中数据转换,参考其他文章
更多:
浙公网安备 33010602011771号