控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

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

作者:chegan 出处:博客园 2010年02月03日 阅读:

最近不断出差,设计器功能更新很慢,抱歉。今天把新增的标签功能说一下吧。

在规则中,为了对规则进行说明,可以给规则类增加一个TextBlack来对规则进行注释,之前的程序也是这么做的,如下图所示:

 


但是这样的注释有一个缺点,不能手动调整位置,而是只能根据规则的位置自动设置本文的位置,有时候这个自动设置的位置不是我们希望的位置。为了解决这个问题,我们对工作流的配置增加一个“标签”类,这个类是独立于规则之外的,专门用于对规则进行注释说明的类。另外,这个标签只是用于工作流图形的显示,并不涉及到流程属性,因为不需要做存储到数据库的方法,只保存在
xml配置文件里面就可以了。

20.1 增加标签类

vs.net中新建一个xaml文件,将文件名称修改为Label.xaml,这个类就是我们的标签类,这个类中有两个主要的内容,如下所示:

<UserControl x:Class="Shareidea.Web.UI.Control.Workflow.Designer.Label"
    xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml" 
             MouseLeftButtonDown
="UserControl_MouseLeftButtonDown"
             MouseMove
="UserControl_MouseMove"
              MouseLeftButtonUp
="UserControl_MouseLeftButtonUp"
             MouseLeave
="UserControl_MouseLeave"
    Width
="400" Height="20">
    
<Grid x:Name="LayoutRoot"    Background="Transparent" >
        
<TextBlock Name="txtLabelName"    ></TextBlock>
        
<TextBox Name="tbLabelName"  TextChanged="TextBox_TextChanged"  Visibility="Collapsed"></TextBox>
    
</Grid>
</UserControl>

 

其中,TextBlock用于显示标签名称,TextBox用以编辑标签名称。

这个类有以下几个重要的属性:

l         支持拖拽布局

l         支持导入、导出xml信息

l         支持修改标签名称

l         支持选择,群组移动

l         支持粘贴、拷贝

l         支持删除

l         支持鼠标右键菜单

本节将具体说明其中的几个。

20.2 支持拖拽

支持拖拽的功能在前下面的活动和规则类的编写时候已经做了类似的工作,主要就是监控三个事件

UserControl_MouseLeftButtonDown

UserControl_MouseMove,

UserControl_MouseLeftButtonUp

具体这里不再赘述,可参考源代码内容

20.3 支持导入导出xml

20.3.1 导出xml

导出xml的很简单,如下所示:

 

public string ToXmlString()
        
{
            
if(!isDeleted)
                
return @"<Label X=""" + Position.X.ToString() + @""" Y=""" + Position.Y.ToString() + @"""><![CDATA[" + LabelName + "]]></Label>";
            
return "";
        }

 

只需要记录标签的名称和位置信息就可以了。

20.3.2 导入xml

根据xml信息导入标签也很简单,分析xml内容,动态构造标签,加入到容器中即可,如下所示:

 

Code

 

20.4 支持标签改名

标签只有一个显示名称,并没有特别复杂的属性,因此,可以直接在界面上进行标签名称的修改,而不必再作一个标签的属性页来修改。标签类中的TextBoxTextBlock也正是为此目的设立的。

默认的,TextBlock是显示状态,而TextText是隐藏状态,当鼠标双击标签时,TextBlock隐藏,而TextBox显示,这样就可以让用户编辑标签名称,当鼠标移出标签类时,TextBlock是显示状态,而TextText是隐藏状态。 

本章的内容就到这里,下一张将继续完成整个标签类

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统