使用silverlight构建一个工作流设计器(八)(附源代码下载、在线演示、视频教程)

使用silverlight构建一个工作流设计器(八)(附源代码下载、在线演示、视频教程),第1张

概述详情请见 http://www.cnblogs.com/chegan/archive/2009/05/04/1448515.html   源代码下载:http://workflowdesigner.codeplex.com/ 在线演示:http://www.shareidea.net/workflow.htm 视频教程: http://www.shareidea.net/video/sharede

详情请见

http://www.cnblogs.com/chegan/archive/2009/05/04/1448515.html

 

源代码下载:http://workflowdesigner.codeplex.com/

在线演示:http://www.shareidea.net/workflow.htm

视频教程: http://www.shareidea.net/video/sharedesigner/sharedesigner.html

本文源地址: http://www.cnblogs.com/chegan/archive/2009/05/04/1448515.html

从这一版本开始,本程序正是命名为 ShareDesiner.SL 

本章主要是增强用户体验功能,包括:1、支持对象多选(包括鼠标和键盘两种方式,类似windows中选择多个文件的方式)。2、支持选中的对象群组移动。3、支持选中的对象拷贝和粘贴(活动和规则)。4、支持更多键盘 *** 作Ctrl+A(全选),Ctrl+C(拷贝),Ctrl+V(粘贴),Ctrl+Z(回退),Delete(删除)。5、更多右键菜单。如果您没有耐心继续往下看了,请看上面的视频教程吧。

增强的用户体验功能 6.1 支持选择多个对象

对于选择多个对象,我们可以参考windows中选择多个文件的方式。包括两种方式:

l@H_419_54@         按住Ctrl键,然后用鼠标一次点击选择的文件,被选中的文件以不同的颜色显示。

l@H_419_54@         按下鼠标左键,然后拖动鼠标,在屏幕上画出一个矩形,处在矩形中的文件被选中,同时以不同的颜色显示。

 

我们给活动和规则增加一个属性 IsSelectd,表示对象是否被选中。如果被选中,那么背景颜色使用区别于没有选中的对象颜色。如下图所示:

 

同时,在容器类中增加一个属性CurrentSelectedControlCollection,用以存储当前被选中的对象集合。

对于第一种方法,在对象的MouseleftbuttonDown中编写代码,设置对象的IsSelected=!IsSelected,同时将对象加入到容器的CurrentSelectedControlCollection集合中。

对于第二种方法,首先需要根据鼠标在容器内的拖拽动作画出相应的矩形,当鼠标松开时,遍历当前所有容器中的对象,检查对象是否在鼠标画出的矩形区域内,如果在,那么设置对象的IsSelected=true,并将对象添加到容器的属性CurrentSelectedControlCollection中即可。如下图所示:

 

6.2 支持多个选择对象的群组移动

在前面的内容中,我们使用鼠标拖动一个对象在容器中移动,这个动作只限于一个对象(一个活动,或者一个规则),当用户选择多个对象的时候,希望对这个多个对象进行同步的移动处理。

我们可以在前面代码的基础上进行扩展,对于一个对象,我们的代码已经支持了移动处理,如果有多个对象被选中,我们在移动其中一个对象时,需要计算出当前移动的位移(xy座标),并把这个位移参数传递给容器对象,在容器对象中根据6.1中的内容,遍历当前选中的对象,根据位移参数重新设置对象的位移即可。

 

6.3对象的拷贝和粘贴

单个对象支持被拷贝和粘贴,选中的群组对象也支持拷贝和粘贴。

6.3.1对象拷贝

对象靠别类似于windows系统中的拷贝文件,对于windows中的拷贝文件,我们得到了一个完全相同于源文件的备份。对于我们的系统来说,对象包括规则和活动,这两种对象支持拷贝,为了支持拷贝,我们需要给对象增加一个拷贝的方法。这个方法放置在相应对象的类中,就叫做Clone().在这个方法中,首先New了一个新的活动或者规则类,并把当前对象有关的数据和位置信息复制给我们新创建的对象,这样就得到了一个对象的拷贝。

使用6.1中的方法,遍历当前所有选中的对象,对于每一个对象调用它的Clone方法,并把这些备份的对象放在在容器类的copyElementCollectionInMemory属性中,以便进行粘贴 *** 作。

6.3.2 对象粘贴

有了6.3.1的对象拷贝,对象粘贴就相对简单一点了。我们遍历容器的

copyElementCollectionInMemory,对于容器中的每一个对象,设置它的位置信息,并添加到容器中即可。

6.4 支持更多的键盘 *** 作

为了使得用户 *** 作更加快捷、简便,我们给系统增加了更多的键盘 *** 作功能。包括

l@H_419_54@         Ctrl+A:选中容器内的所有对象

l@H_419_54@         Ctrl+C:拷贝选中的对象到内存中

l@H_419_54@         Ctrl+V:粘贴内存中的拷贝对象

l@H_419_54@         Ctrl+Z:退回上一步

l@H_419_54@         Delete:删除选中的对象

总结

以上是内存溢出为你收集整理的使用silverlight构建一个工作流设计器(八)(附源代码下载、在线演示、视频教程)全部内容,希望文章能够帮你解决使用silverlight构建一个工作流设计器(八)(附源代码下载、在线演示、视频教程)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1050787.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存