本文的主要目的为:在Rehost WWF Designer后,我希望用户看到的是更为专用化的设计器而不是由微软所提供的缺省的E文提示(至少当前版本是这样子的)。因为工作繁忙,本文所指的外观设计并不全面,只局限于标题和文字,还希望大家原谅。不过就一般的应用而言,我想这些能满足大部分需求。
让我们先来了解一下定制外观的基础,当我们想对某一个活动的外观进行定制时,我们必须为其指定一个自定义的Designer, 因为其中的外观属性基本上是Protected属性的。所有的外观特性都由Designer来提供,如活动中心的提示信息,标题中的文本,边框,底色等等。其中的一些是在Designer中指定ActivityDesignerThemeAttribute属性来实现的。将Designer应用到我们自定义的活动上面去,我们就可以看到这些效果了。示例如下:
[Designer(typeof(MySequentialWorkflowActivityDesigner), typeof(IRootDesigner))]
public class MySequentialWorkFlowActivity : SequentialWorkflowActivity
{
}
其中MySequentialWorkFlowActivity为我们自定义的活动。MySequentialWorkflowActivityDesigner为我们自定义的设计器(应该称之为外观设计器可能更好一些)。IRootDesigner则说明这是一个根控件。对于WWF来讲这是我们的设计器中的第一个控件。如果不是根控件,如CodeActivity则应将其替换为IDesigner。
进入我们的正题,
现在让我们来改变SequentialWorkflowActivit的标题和帮助文本。
从SequentialWorkflowRootDesigner继承一个自定义的Designer。
重载并实现下面的方法。
// 改变帮助提示信息
protected override string HelpText
{
get{return Res.WF_HelpText; }
set{base.HelpText = value; }
}
// 改变标题
protected override SequentialWorkflowHeaderFooter Header
{
get
{
base.Header.Text = Res.WF_Text;
return base.Header;
}
}
注意:在Designer中有一个Text属性,不能将它作为标题进行使用!
其它活动的Designer可以通过继承ActivityDesigner来实现。一般情况下自定义活动的名字被显示在活动的中心位置。如果想拥有活动的英文名字,但显示是汉字内容则可以通过实现其Designer中的Text属性来解决,这里就不多做说明了。
有关Rehosting WWF Designer的文章请参阅我的另外几篇文章:
WWF的一些技术细节与应用体会(一)
WWF的一些技术细节与应用体会(二)
Rehosting WWF 设计器 之运行时定制活动的外观
Rehosting WWF Designer 之定制活动的外观
Rehosting WWF Designerp之从工具箱拖动活动到设计器上
Rehosting WWF 设计器