王婵娟
(广州大学华软软件学院 广东 从化 510990)
【摘 要】本文介绍了微软新一发技术 WPF 的架构,“数据驱动”理念,及其新特性,并通过一个 AddNote 应用程序简单说明了如何使 用这些新特性。
【关键词】WPF XAML;数据驱动
WPF,Windows Presentation Foundation , 是微软新一发技术,
涵盖了桌面应用程序开发、 网络应用程序开发和移动应用程序开发, 是微软开发技术未来十年的主要方向。 WPF 基于微软.NET 平台,目前 最新版本为 4.0。 WPF 基于 DirectX 底层接口,带来优秀的图形向量渲 得界面描述代码和程序代码得以分开,从而提高了开发效率并有利于
团队开发。
下面是一个按钮示例: XAML 类似于 XML,但是进行了一些扩展。
染引擎,因此相对于上一代 GDI/GDI+编程模型有了质的飞跃,可以轻 该按钮背景为蓝色,前景为红色,内容为“This is a button”。
松实现 2D/3D 绚丽效果,比如半透明、图形翻转、平移、缩放等等。
1 “事件驱动”、“数据驱动”
“依赖属性”是 WPF 的一个重要的特性。 它和一般的.NET 属性看起来很相似在保持代码可维护性的前提下,如何让数据能够顺畅地到达界面 ,但是更加复杂和强大,是一种可以自己没有值,并能通过并灵活显示,同时方便地接收用户的操作历来都是表示层开发的核心 使用 Binding 从数据源获得值(依赖在别人身上)的属性。 问题。在 WPF 出现之前,Windows Forms、ASP.NET(Web Forms)等技术 主要区别在于:平常的.NET 的值直接读取于类的一个私有属性, 均使用“事件驱动”理念,这种由 “ 事件-> 订阅-> 事件处理器 ” 关系交 而 WPF 允许对象在被创建的时候并不包含用于存储数据空间 (即字 织在一起构成的程序,很容易造成代码变得复杂难懂、bug 难以排除。 段所占用的空间)、只保留在需要用到数据时能够获得默认值、借用其 而 WPF 技术则是微软在开发理念上的一次升级— 由“事件驱动”变为 他对象数据或实时分配空间的能力—— 这种对象就称为依赖对象 “数据驱动”。
而它这种实时获取数据的能力则依靠依赖属性 在“数据驱动”下,当数据发生变化时,会主动通知界面控件、推动 (Dependency Object),控件展示最新的数据;同时,用户对控件的操作会直接送达数据,就好 (Dependency Property)来实现。 像控件是“透明”的。 在这种理念中,数据占据主动地位、控件和控件事 件被弱化。 数据与界面之间的桥梁是数据绑定(Data Binding),通过这 个桥梁,数据可以流向界面,再从界面流回数据源。
2.4 路由事件 2.3 依赖属性路由事件是一种可以针对元素树中的多个侦听器(而不是仅针对由策略之一:
2 WPF 架构及特性
引发该事件的对象)调用处理程序的事件。 路由事件使用以下三个路 冒泡: 针对事件源调用事件处理程序。 路由事件随后会路由到 2.1 架构后续的父元素, 直到到达元素树的根。 大多数路由事件都使用冒泡 素的输入或状态变化。
路由策略。 冒泡路由事件通常用来报告来自不同控件或其他 UI 元 直接: 只有源元素本身才有机会调用处理程序以进行响应。 这
与 Windows Forms 用于事件的“路由”相似。 但是,与标准 CLR 事件 不同的是,直接路由事件支持类处理(类处理将在下一节中介绍)而且可以由 EventSetter 和 EventTrigger 使用。
隧道:最初将在元素树的根处调用事件处理程序。 随后,路由事件将朝着路由事件的源节点元素(即引发路由事件的元素)方向,沿路由线路传播到后续的子元素。 在合成控件的过程中通常会使用或处理隧道路由事件,这样,就可以有意地禁止显示复合部件中的事件,或者将其替换为特定于整个控件的事件。 在 WPF 中提供的输入事件通常是以隧道/冒泡对实现的 。 隧道事件有时又称作 Preview 事件 , 这是由隧道/冒泡对所使用的命名约定决定的。
图 2.1 WPF 架构图
作为应用程序开发人员,不需要始终了解或关注正在处理的事件该行为的元素上处理事件,则该行为通常会不可见
如下:
是否作为路由事件实现。 路由事件具有特殊的行为,但是,如果在引发从上图可以看出 ,WPF 主 要 由 Presentation -Framework、 PresentationCore、milcore 三层组件构成;Common Language Runtime 是.
NET 框架平台,DirectX、User32 是 Windows 子系统。 前两个组件都是 Private void OnClickElementMouseDown (object sender, 基于.NET 进行开发的 , 而 milcore 由于性能影响较大 , 采用了非托管 MouseButtonEventArgs e) { 代码进行开发,这样可以与 DirectX 进行紧密集成,提高效率。 e.Handled = true; 2.2 XAML }
20 世纪 90 年代中期, 基于 SGML 衍生出的 XML 的应用已变得 2.5 其他特性作为新一代界面技术,还具有许多划时代的特性及功能。 比 WPF 极为流行。 许多开发者把 XML 视为解决所有计算机开发问题的灵丹 如资源组织、布局、控件自定义、数据绑定、动画、多媒体支持等等。 限 妙药,XML 几乎无处不在。
于篇幅,不再做过多介绍。
针对 Windows Vista/7 操作系统, 微软提供了专门的界面开发语
言 XAML(eXtensible Application Markup Language ,可扩展应用程序标 3 实现一个基于 WPF 开发的 AddNote 应用程序
记语言)。
XAML 作为界面描述语言,它最终会被编译成.NET 后台代码。 因此, 它能够同后台进行逻辑处理的.NET 语言如 C#、J#、C++、VB 等协 同工作,其工作性质类似于 ASP.NET 中 的 HTML。 XAML 的产生,使
3.1 需求说明基于快速简洁记录信息的原则,开发一个 AddNote 应用程序。 该 程序可以以文本形式保存已添加的信息,并能快速添加新的信息。 本
程序基于 Visual Studio 2010 的 WPF 开发框架。 3.2 界面设计 3.4.1 ListView 中数据源的绑定问题
基于 WPF 的“数据驱动”的原则,在 WPF 中可以很容易实现控件
随着数据源的更新而更新,只需要将控件与数据源之间建立关联就可 一个集合对象作为其数据源。
从 3.3 节的 XAML 标签代码中可以看到, 在 ListView 中有三列信息, 分别由 GridViewColumn 标签定义 , 每一列关联一个数据 , 例如 件 “ 文
关 联 FileName, “ 大 小 关 联 Size, “ 修 改 时 间 ” 列 关 联 ” 列 名 ” 列
以。 ListView 是一个列表控件中,可以利用它的 ItemsSource 属性绑定
Modify_Time。 这三列都是相互关 联 的 三 个 集 合 , 可 以 定 义 一 个
FileNode 类包含这三个信息,紧接着定义一个有关这个类对象的集合 对象,并绑定到 ListView 控件即可。 实现代码如下:
public class FileNode
图 主界面窗口3.1 {
public string FileName { get; private set; } 如图 3.1 所示为主界面窗口,用一个 Menu 控件提供 “ 添加 关 ”、 “
public string Size { get; private set; }
于”、“退出”功能,ListView 控件提供文件浏览功能,点右键可弹出“删
public string Modify_Time { get; private set; }
除”菜单。 当点击“添加”菜单时弹出添加窗口,如下图所示。
}
private ObservableCollection public MainWindow() { InitializeComponent(); lsv.DataContext = _FileCollection; ...... } 其中, 在使用集合类型作为列表控件的 ItemsSource 时一般考虑 用 ObservableCollection 图 添加窗口的列表控件,改变会立刻显现出来。 3.2 3.4.2 ListView 中双击事件的问题 为了简单快捷考虑,添加窗口只设置了“标题 控件 和” (TextBox ) 一 项 Item, 但是该控件没有相应的 ListView 中的每一行信息为 内容控件两项其中标题一栏设置有默认值并通 “”(RichTextBox ),“”。 过按钮“保存”添加信息,“取消”按钮放弃操作。 在主窗口中双击某一 ItemDoubleClick 事件来实现双击某一项的动作 , 只 能 借 助 于 项,也会弹出该窗口显示已添加的选中的信息,作进一步查看或修改 MouseDoubleClick 事件来实现。 这会有问题:当双击标题行时也会触 之用。 发该事件。 所有首先得判断双击的是 Item,还是标题行。 实现代码如 3.3 XAML 设计 下 : 该 程 序 涉 及 两 个 窗 口 , 共 设 计 两 个 XAML 文 件 , 分 别 是 MainWindow.xaml 和 AddWindow.xaml。 MainWindow.xaml 中标签说明 private void lsv_MouseDoubleClick (object sender, MouseButtonEventArgs e) 如下: { } 除 \" Click = \" } 其中, 将文本文件中的内容显示于 RichTextBox 控件中的代码如 XmlReader xr = XmlReader.Create(sr); 4 总结 3.4 关键问题的解决 WPF 其实不仅仅是图形引擎而已 , 它提供了一 ( 下转第 4 页) 由于工件较薄,刚性较差,工序多,如果单纯采用常规的通用夹具 (5) 为了保证 ( 即) 和的精度 , 避免由 于 装来装夹工件及切削加工,将难于控制工件的变形,很难达到技术要求, 提高了工人装夹工件的难度。 因此,需要设计出一套适合图 1 所示零 夹而产生工件变形, 以至尺寸超差,50 工序和 60 工序同样在定位方 式上采用“一面两孔”定位,夹紧方式采用压板压紧的方式将工件固定 件的专用夹具,如图 2、3、4、5 所示。 于夹具之上,(如图 7 图 8 所示)。 (1)图 2、3.所示夹具,分别适合于附表 1 中 30 工序和 40 工序,图 4 为夹具与四轴的连接。 图 4 图 5 4 结束语 图 7 图 8 (2)图 4、5 所示夹具,分别适合于 50 工序和 60 工序。 通过对夹具设计与装夹,有效的解决了反复装夹,零件加工的尺过程中的操作,大大提高批量零件加工效率。 科 30 工序,40 工序,50 工序和 60 工序,均设计了各自的专有夹具, 采用典型的“一面两销”定位方式,采用该定位方式的优点在于,一次 装夹可以 6 个自由度,安全可靠,在装夹方面,大大降低了对操作 员装夹的技术难度,提高了装夹的速度。 则 过 10 工序采用三轴加工中 (3) 根据加工中基准先行的 原 , 通心,采用虎钳装夹,毛坯外形定位的方式。 (4)为后序能实现对工件完成最大范围的加工,30 工序和 40 工 序 在 定 位方式上采用 “ 一面两孔 ” 定位 , 夹紧方式采用螺丝反拉的方 式,将工件固定于夹具之上,并将螺丝帽沉于夹具中,(如图 6 所示)。 寸精度和大批量加工中的尺寸稳定性。 同时也方便操作者在实际加工 ● 作者简介:陈裕银,加工中心高级技师,加工中心高级考评员,1993 年 7 月 至 2005 年 9 月, 广州白云模具厂从事模具设计、 模具加工、 数控编程与加工, 2005 年 9 月至 2006 年 11 月,广东机电职业技术学院从事数控编程与加工实习 教学,2006 年 11 月至今,广东省机械技师学院,培训鉴定与校企合作部副主任, 从事校企合作产品生产与实训教学。 [责任编辑:常鹏飞] 图 6 图 7 接 第 531 页 件 驱 动 转 变 为 据 驱( 上 ) 种全新的开发模式 , 由 “ 事” “ 数 动”。 当然对于普通用户而言,最直观的就是界面越来越漂亮,看起来 越来越舒服了。 但对于开发人员而言,界面显示和代码将更好地得到 分离,这与从前的桌面应用程序开发由很多不同。 本文通过 AddNote 这个小应用程序,浅尝了 WPF 的强大功能,体会了 WPF 的数据绑定、 依赖属性、路由事件等新特性。 当然,要做出更好、更多功能的软件,还 需要深入了解 WPF 及.NET 编程,编写更复杂的代码。 科 【参考文献】 [1]Petzold C. Windows Presentation Foundation 程序设计指南[M].蔡学镛,译. 北 京:电子工业出版社,2008:844-845. [2]刘铁猛.深入浅出 WPF[M].北京:中国水利水电出版社,2010:80-101. [责任编辑:常鹏飞] ● (上接第 2 页)计量、最大需量计量和预付费等;保护功能,包括过电 流、过电压保护与防窃电等 ; 通信功能 , 可以是通过 RS485、RS232 接 口与数据网关进行数据交换,实现与上位机通信、红外通信、无线电通 中的优势将进一步得以体现, 此类电表的应用将具有深远的前景,对其的研究和设计也具有重要的社会意义。 科 ● 信或 IC 卡模式等。 【参考文献】 在电能计量表功能发展的带领下, 抄表也经历了不同的时期,实 [1]赵伟,庞海波,刘灿涛.电能表技术的发展历程[J].电测与仪表,1999,36(6):4- 现了从手动抄表到自动抄表的过渡,其中出现了以 PDA(掌上电脑)为 7. [2]郭松林,林海军,张礼勇.电子式电能表专用芯片的分类及原理[J].电测与仪 代表的手持式抄表器 、IC 卡表自动抄表系统 、 电力载波自动抄表系 表,2002,39(10):5-7. 统、区域远红外抄表、车载抄表系统等。 本设计中采用 RS485 接口与 电能管理系统中的智能数据网关进行通信,并且通过以太网与上位机 作者简介:哈建红(1970—),女,回族,宁夏灵武人,2004 年毕业于宁夏广播 连接从而实现远程电能管理。 电视大学电力系统及其自动化专业,助理工程师,现主要从事电表修校方面的 工作。 结束语 4 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- ovod.cn 版权所有 湘ICP备2023023988号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务