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 数据绑定不仅能减少手动更
阅读全文