WPF新手村教程(五)附魔教学绑定如何实现?
摘要:WPF个人文档(五)—— 绑定 [!IMPORTANT] 在开始之前,我觉得我们非常有必要要先了解一下ViewModel ViewModel:专门给界面(View)使用的数据对象 # ViewModel = 专门给界面(View)使用的数据
WPF个人文档(五)—— 绑定
[!IMPORTANT]
在开始之前,我觉得我们非常有必要要先了解一下ViewModel
ViewModel:专门给界面(View)使用的数据对象
# ViewModel = 专门给界面(View)使用的数据对象
如果只讲绑定,可以简单理解为数据源对象
在这里先留一个简单的印象,后面会详细讲解,在看完本篇随笔之后,你也会对这个东西有一个较为深刻的印象
# 常用于MVVM架构(此架构我们以后再详细讲解)
Model → ViewModel → View
数据 UI数据 界面
[!NOTE]
WPF中,绑定的本质实际上就是在找东西
换句话就是:**WPF的一切绑定,本质都是在找 数据源 **
只不过 —— 数据源到底是 对象里的数据,还是 界面里的控件,这个就得看你的代码了
# 根据数据源的位置,WPF绑定通常会被分成两大类
绑定
├─ 元素绑定(Element Binding)
└─ 非元素绑定(Non-Element Binding)
一.元素绑定
[!NOTE]
WPF —— 绑定
这里,我们来看看官方对于绑定的解释
WPF 元素绑定:将UI元素属性与数据源对象建立连接的机制,能在数据变化时自动更新界面,或在界面修改时同步数据源
它支持 .NET 对象、XML、集合 等多种数据源,并可通过 Binding 对象灵活配置
🌱Binding = 在 UI 属性 和 数据源 之间建立连接
示例:将按钮背景色绑定到数据对象的属性
此处 Background 是绑定目标属性,ColorName 是绑定源属性,通过 Path 指定
<DockPanel
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:c="clr-namespace:SDKSample">
<DockPanel.Resources>
<c:MyData x:Key="myDataSource" ColorName="Red"/>
</DockPanel.Resources>
<Button Background="{Binding Source={StaticResource myDataSource}, Path=ColorName}"
Width="150" Height="30">
我会变成红色!
</Button>
</DockPanel>
绑定的核心要素
目标对象与属性:必须是依赖属性(DependencyProperty)
源对象与路径:可为对象、集合、XML等,通过 Path 或 XPath 指定
数据上下文(DataContext):未显式指定源时,从父元素继承
模式(Mode):
OneWay:源 → 目标
TwoWay:双向同步
OneWayToSource:目标 → 源
OneTime:初始化一次
触发器(UpdateSourceTrigger):如 PropertyChanged、LostFocus 控制何时更新源
集合绑定与视图
绑定到集合时使用 ItemsSource:
<ListBox ItemsSource="{Binding MyItems}" />
若需排序、筛选、分组,可用 CollectionViewSource:
<CollectionViewSource x:Key="view" Source="{Binding MyItems}" />
<ListBox ItemsSource="{Binding Source={StaticResource view}}" />
数据转换与验证
类型不匹配时可实现 IValueConverter 转换值
可通过 ValidationRule 添加验证逻辑,并结合 ErrorTemplate 提供视觉反馈
注意事项
源对象应实现 INotifyPropertyChanged,集合应实现 INotifyCollectionChanged 以支持动态更新
合理选择绑定模式和触发器可优化性能与交互体验
这样,WPF 数据绑定不仅能减少手动更
