360 likes | 502 Views
DEV312 基于 WPF 的数据绑定. 最大多数的应用程序都是基于数据的程序. 三个要点. 对数据的强大支持 对数据的普遍支持 对数据的灵活支持. 对数据的强大支持. 对数据的强大支持. 单一绑定 (Singular Binding) 数据模板 (DataTemplate) 表绑定 (List Binding) 集合视图 (CollectionView). 对数据的强大支持. 单一绑定 (Singular Binding) 数据模板 (DataTemplate) 表绑定 (List Binding)
E N D
三个要点 • 对数据的强大支持 • 对数据的普遍支持 • 对数据的灵活支持
对数据的强大支持 • 单一绑定 (Singular Binding) • 数据模板 (DataTemplate) • 表绑定 (List Binding) • 集合视图 (CollectionView)
对数据的强大支持 • 单一绑定 (Singular Binding) • 数据模板 (DataTemplate) • 表绑定 (List Binding) • 集合视图 (CollectionView)
单一绑定 UI对象 数据对象 绑定(Binding) 属性 属性
对数据的强大支持 • 单一绑定 (Singular Binding) • 数据模板 (DataTemplate) • 表绑定 (List Binding) • 集合视图 (CollectionView)
数据模板定义数据的可视化 public class AuctionItem { string Image {get;set;} int RemaingSeconds {get;set;} } 数据模板
数据模板 (DataTemplate) DataType Data Template Data Object Grid Image TextBlock Binding Path= Image Binding Path=RemainingTime 定义任意的元素树
数据模板 (DataTemplate) • 通过XAML定义 • 易于修改和提供工具支持 • Visual Designer for WPF • Microsoft Expression Interactive Designer • 使用标准的WPF元素 • Panels, controls, 等. • Binding是联系数据绑定的源(Source)和对象(Target)的桥梁。 • 和控件的模板使用相同的模式
对数据的强大支持 • 单一绑定 (Singular Binding) • 数据模板 (DataTemplate) • 表绑定 (List Binding) • 集合视图 (CollectionView)
表绑定 (List Binding) AuctionItem UI Object 1 List Binding AuctionItem UI Object 2 AuctionItem UI Object 3 AuctionItem UI Object 4 … … IEnumerable ListBox
对数据的强大支持 • 单一绑定 (Singular Binding) • 数据模板 (DataTemplate) • 表绑定 (List Binding) • 集合视图 (CollectionView)
集合视图 (Collection View) • 当前项 (Current Item) • 分组 (Group) • 排序 (Sort) • 过滤 (Filter)
对数据的普遍支持 • DependencyObject (DO) • DependencyProperty (DP)
DependencyObject • WPF中所有控件的基类 • 还是很多有用的类的基类 • Transforms (rotate, skew, scale) • Triggers (Event, Data) • Brushes • 等等 • 提供一组核心的服务
CLR的属性(Property) public decimal Value { get { return _value; } set { _value = value; } } private decimal _value;
Dependency Property public decimal Value { get { return (decimal)GetValue(ValueProperty); } set { SetValue(ValueProperty, value); } } public static readonly DependencyProperty ValueProperty = DependencyProperty.Register("Value", typeof(decimal), typeof(NumericUpDown), new PropertyMetadata((decimal)0) );
DO/DP提供的服务 • 基本服务 (Base Services) • 存储空间 (Storage) • 缺省值 (Default Value) • 附加属性 (Attached Properties) • Canvas.Left, Grid.Column, DockPanel.Dock • 验证 (Validation) • 值改变通知 (Change Notifications) • 强制转化 (Coercion) • 数据绑定 (Binding) • 框架增加 (Framework Adds) • 动画(Animation), 继承(Inheritance), 样式(Styling )
WPF支持的数据模型 • IBindingList (DataTable, BindingList<T>) • ICustomTypeDescriptor (DataRowView) • INotifyPropertyChanged • [Property]Changed event • 任意的to/from转换 • One-to-Many Binding • 异质的(Heterogeneous) 数据类型 • 有层次的(Hierarchical)数据类型
XML绑定 • WPF提供对XML绑定的本地支持 • XMLDataProvider允许对本地和远程数据的连接 • Path模式是XPath
回顾三个要点 • 对数据的强大支持 • 对数据的普遍支持 • 对数据的灵活支持