WPF基本概念入门
2013-11-14 15:56
190 查看
关于数据类型,有原子类型,列表类型,字典类型等等,而wpf对应控件有contentControl,itemsControl,headerItemsControl等。
控件和类型一一对应,控件和类型之间的交换则通过Binding,中间如果类型和控件需要转换可以通过Converter,交换方向则决定了Binding的mode(OneWay,TwoWay...),数据校验则通过ValidationRule等。
对于contentControl,不仅要呈现其数据,而且还需要定义如何呈现, 这时就需要style和controlTemplate。 对于itemsControl和headerItemsControl,其内部(itemTemplate)还是由contentControl组成,即由dataTemplate来实现类型和数据的转换。每个item通过itemsContainer来定义统一的外观。对于itemsControl和headerItemsControl本身的结构则同样通过controlTemplate来定义。
binding通过更改通知INotifyPropertyChanged来实现数据和类型的交换,在wpf中控件本身都是从DependencyObject继承而来,这个类提供了整个wpf的基础。
对于上述各种控件来说,还需要布局,这时就需要panel。panel决定了子控件在其内部如何布局,而子控件通过panel的各种attachedProperty来指定(比如Grid.Row, Canvas.LeftTop等等)
界面中的元素必然是和用户进行交互,这时就需要事件机制。wpf中有RoutedEvent和AttachedRoutedEvent,所谓routedEvent,有元素根部到当前触发事件的元素(管道事件),也有从当前元素上溯到根元素(冒泡事件)等。wpf中的管道事件基本上以Preview作为前缀(比如:ProviewMouseLeftButtonDown)。
从上面可以看出MVVM模式是专为wpf量身定做的三层架构,我们只要定义好自己的业务数据结构,根据数据结构选择合理的控件,通过binding来实现。本文出自 “木子纵横” 博客,请务必保留此出处http://muzizongheng.blog.51cto.com/856912/1332942
控件和类型一一对应,控件和类型之间的交换则通过Binding,中间如果类型和控件需要转换可以通过Converter,交换方向则决定了Binding的mode(OneWay,TwoWay...),数据校验则通过ValidationRule等。
对于contentControl,不仅要呈现其数据,而且还需要定义如何呈现, 这时就需要style和controlTemplate。 对于itemsControl和headerItemsControl,其内部(itemTemplate)还是由contentControl组成,即由dataTemplate来实现类型和数据的转换。每个item通过itemsContainer来定义统一的外观。对于itemsControl和headerItemsControl本身的结构则同样通过controlTemplate来定义。
binding通过更改通知INotifyPropertyChanged来实现数据和类型的交换,在wpf中控件本身都是从DependencyObject继承而来,这个类提供了整个wpf的基础。
对于上述各种控件来说,还需要布局,这时就需要panel。panel决定了子控件在其内部如何布局,而子控件通过panel的各种attachedProperty来指定(比如Grid.Row, Canvas.LeftTop等等)
界面中的元素必然是和用户进行交互,这时就需要事件机制。wpf中有RoutedEvent和AttachedRoutedEvent,所谓routedEvent,有元素根部到当前触发事件的元素(管道事件),也有从当前元素上溯到根元素(冒泡事件)等。wpf中的管道事件基本上以Preview作为前缀(比如:ProviewMouseLeftButtonDown)。
从上面可以看出MVVM模式是专为wpf量身定做的三层架构,我们只要定义好自己的业务数据结构,根据数据结构选择合理的控件,通过binding来实现。本文出自 “木子纵横” 博客,请务必保留此出处http://muzizongheng.blog.51cto.com/856912/1332942
相关文章推荐
- 使用scp拷贝时报报错
- android计算pad或手机的分辨率/像素/密度/屏幕尺寸/DPI值的方法
- Mysql常用命令行大全
- oracle中exp,imp的使用详解
- WPF基本概念入门
- 网站会员邮件群发方案
- 创建.ind文件对数据库进行批量操作
- 添加发送键值按钮
- 简易短信猫接口程序,可快速实现短信猫二次开发
- SQL Server select into用法
- ecshop学习1
- 子查询
- servlet的ServletContext和全局变量和应用的物理路径
- Android View坐标getLeft, getRight, getTop, getBottom解惑
- es优化
- Free report 免费开源报表
- mouseout与mouseleave
- STL 水题 Fixing Typos(string 容器)
- 一个简单的游戏开发框架(三.事件管理)
- CleanMyMac2清理 lanchpad里面的图标没了