惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Announcements
Recent Announcements
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Last Week in AI
Last Week in AI
Scott Helme
Scott Helme
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
L
LINUX DO - 最新话题
S
Security @ Cisco Blogs
Webroot Blog
Webroot Blog
S
Security Affairs
H
Hacker News: Front Page
TaoSecurity Blog
TaoSecurity Blog
W
WeLiveSecurity
G
GRAHAM CLULEY
T
Tenable Blog
Schneier on Security
Schneier on Security
S
Securelist
Cyberwarzone
Cyberwarzone
P
Privacy International News Feed
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Schneier on Security
Hacker News - Newest:
Hacker News - Newest: "LLM"
Recent Commits to openclaw:main
Recent Commits to openclaw:main
O
OpenAI News
N
News and Events Feed by Topic
AWS News Blog
AWS News Blog
C
Cisco Blogs
T
Threat Research - Cisco Blogs
S
Secure Thoughts
大猫的无限游戏
大猫的无限游戏
C
Check Point Blog
The GitHub Blog
The GitHub Blog
G
Google Developers Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
美团技术团队
Martin Fowler
Martin Fowler
Microsoft Security Blog
Microsoft Security Blog
L
LangChain Blog
Apple Machine Learning Research
Apple Machine Learning Research
爱范儿
爱范儿
D
DataBreaches.Net
博客园_首页
MyScale Blog
MyScale Blog
博客园 - 叶小钗
博客园 - 三生石上(FineUI控件)
P
Proofpoint News Feed
J
Java Code Geeks
SecWiki News
SecWiki News
P
Palo Alto Networks Blog
Know Your Adversary
Know Your Adversary
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org

博客园 - chegan

历时半年,我将一个大型asp.net的零代码快速开发平台转成了java 用c#从头写一个AI agent,实现企业内部自然语言数据统计分析(三)--一个综合的例子 用c#从头写一个AI agent,实现企业内部自然语言数据统计分析(二)-数据结构和代码分析方法 用c#从头写一个AI agent,实现企业内部自然语言数据统计分析 像纸质笔记本一样给div,textarea添加行的分割线 基于视图的增删改查操作(颠覆传统思维吧) 恶劣的百度推广人员 javascript实现当前页面截屏 基于数据库的企业级智能表单系统设计(asp.net)-架构 基于数据库的企业级智能表单系统设计(asp.net)-序言 同时运行qq和360的方法(偶然发现的) http编程中的get和post混合使用方式 使用silverlight构建一个工作流设计器(二十一)-增加标签(下) 自贺获得DEV-WOW 2009微软开发者大赛开发奖 使用silverlight构建一个工作流设计器(十九)-规则与活动的交点的平滑移动 使用silverlight构建一个工作流设计器(十八)-持久化数据到数据库—服务器段功能实现 使用silverlight构建一个工作流设计器(十七)-持久化数据到数据库—设计webservices接口 使用silverlight构建一个工作流设计器(十六)-持久化数据到数据库—数据库结构 抛论妄自菲薄与夜郎自大之砖,引国家软件发展道路之玉
使用silverlight构建一个工作流设计器(二十)-增加标签(上)
chegan · 2009-09-02 · via 博客园 - chegan

源代码下载: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构建一个工作流设计器(二十) 

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

在规则中,为了对规则进行说明,可以给规则类增加一个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是隐藏状态。 

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