使用silverlight构建一个工作流设计器(二十一)-增加标签(下)

源代码下载:http://www.shareidea.net/opensource.htm

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

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

QQ群:85444465 

本文系列索引:   

使用silverlight构建一个工作流设计器(一)

使用silverlight构建一个工作流设计器(二)

使用silverlight构建一个工作流设计器(三)

使用silverlight构建一个工作流设计器(四)

使用silverlight构建一个工作流设计器(五)

使用silverlight构建一个工作流设计器(六)

使用silverlight构建一个工作流设计器(七)

使用silverlight构建一个工作流设计器(八)

使用silverlight构建一个工作流设计器(九)

使用silverlight构建一个工作流设计器(十)  

使用silverlight构建一个工作流设计器(十一)  

使用silverlight构建一个工作流设计器(十二)  

使用silverlight构建一个工作流设计器(十三)  

使用silverlight构建一个工作流设计器(十四)  

使用silverlight构建一个工作流设计器(十五)    

使用silverlight构建一个工作流设计器(十六) 

使用silverlight构建一个工作流设计器(十七) 

使用silverlight构建一个工作流设计器(十八) 

使用silverlight构建一个工作流设计器(十九) 

使用silverlight构建一个工作流设计器(二十) 

上节说到支持标签改名功能,本节继续增加以下功能:

l         支持选择,群组移动

l         支持粘贴、拷贝

l         支持删除

l         支持鼠标右键菜单

20.1支持选择,群组移动

为了支持标签选择,实现IsSelectd接口,如下所示:

 

Code

 

当用户选择标签的时候,更新标签颜色,并将标签对象加入到当前容器的“已选择”对象中,当用户取消选择时,重置标签颜色,并从容器对象中删除标签

为了支持标签群组移动,实现SetPositionByDisplacement接口,如下所示:

 

Code

 

这个接口根据位移来重新设置标签的位置。

20.2支持粘贴、拷贝

为了支持拷贝,需要实现Clone接口,如下所示:

 

public   Label Clone()
        {
            Label l 
=   new  Label(_container);
            l.LabelName 
=   this .LabelName;
            l.Position 
=   this .Position;
            
return  l;
        }

 

创建一个新的标签,并把当前标签的名称和位置信息赋值给新的标签。

粘贴的功能很简单,就是吧内存中的拷贝的对象添加到容器中显示出来即可。

20.3 支持删除

实现Delete接口就可以支持删除,为了显示删除时候的渐变效果使用一个Storyboard在指定的时间后删除对象,如下所示:

 

Code

20.4 支持右键菜单

首先需要增加一个表示标签右键菜单的LabelMenu.xaml文件,如下所示:

 

Code

 

右键菜单有两个按钮,一个是删除标签,一个是拷贝标签,删除和拷贝的逻辑在上面已经实现了,只需要调用标签对应的方法即可。

本节内容到此就结束了,有什么好的意见请给我留言,多谢!

你可能感兴趣的:(silverlight)