zoukankan      html  css  js  c++  java
  • 学习WF笔记9 自定义活动的属性(2)

    用户在开发工作流项目时会将各种活动拖入到工作流设计界面,然后通过该活动的属性对其进行设置。在开发自定义活动时也可以根据业务需要,通过”DependencyProperty”来存储和管理自定义活动的属性。接下来通过一个范例进行详细介绍。

           首先定义一个”DependencyProperty”属性并且利用它的”Register”方法进行注册。在注册时需要指明该”DependencyProperty”属性所存储的“属性名称“、“属性的类型”以及该属性“所在自定义活动的名称”,当然还可以利用“PropertyMetadata”来为属性定义默认值。如下代码所示,将自定义活动“CustomActivity”中一个字符类型的属性“Para1注册到“DependencyProperty”类型的属性“ParalProperty”中。

    Public static DependencyProperty Para1Property=DependencyProperty.Register(“Para1”,typeof(System.String),typeof(CustomActivity));

           既然“DependencyProperty”属性”Para1Property”是用来管理字符串属性“Para1的,那么用户就要在“Para1属性的“Get”和“Set”方法中使用上面定义的“DependencyProperty”类型属性来对其属性值进行设置。

    Public string Para1

    {

           get{

                  return ((string)(base.GetValue(CustomActivity.Para1Property)));

           }

           set{

                  base.SetValue(CustomActivity.Para1Property,value);

    }

    }

     

    如表1,用户还可以通过一些属性标签来为自定义活动的属性作进一步的设置。

     

     

    1  自定义活动属性的标签

    名称

    类型

    描述

    Browseable

    Boolean

    属性是否在窗口中可见

    Category

    String

    用户定义属性的类别

    Description

    String

    属性的描述信息

    DesignerSerializationVisibility

    Visible,Hidden,Content

    确定是否序列化,以及如何序列化这个属性Visible(默认):已正常方式序列化该属性

    Hidden:阻止序列化该属性

    Content:用于收集属性。收集对象本身没有被序列化,但是收集的内容会被序列化。如果开发人员选择了收集的类型,那么这个属性会被设置为“Content”。如果开发人员选择“non-serializable”类型,那么这个属性会被设置为“Hidden

    ValidationVisibility

    Optional,Required,Hidden

    定义了如何验证属性的值。验证的方式包括可选方式Optional、必选方式Required和隐藏方式Hidden

    Optional(默认):该属性可以为空

    Required:该属性不能为空

    Hidden:该属性的值不会被自动验证。如果ValidationVisibility被设置为Required,那么当组件被重用时就需要通过“smart tags”设置该属性,而在自定义活动“Validator”类中就不需要再进行检查

     

    创建自定义活动

           用户打开VS2008选择并创建一个“Workflow Activity Library”类型的项目,然后将自定义活动“Activity1的父类改成为继承“System.Workflow.ComponentModel.Activity”。最后再创建一个自定义属性“Para1,其代码如下所示。

     Public     static       DependencyProperty Para1Property=DependencyProperty.Register(“Para1”,typeof(System.String),typeof(Activity1));              

    Public string Para1

    {

           get{

    return ((string)(base.GetValue(Activity1.Para1Property)));

    }

    set{

           base.SetValue(Activity1.Para1Property,value);

    }
    }

    在该解决方案下再创建一个顺序类型的工作流项目,用户可将编译成功后的自定义活动“Activity1”从工具条中拖到工作流设计界面,如图1所示,在该自定义活动的属性窗口中就可以看到之前定义的属性“Para1”。

    1

    在自定义活动的属性“Para1”上添加以下标签,如图2所示,用户点击该自定义活动属性时,在属性窗口就会显示相应的提示信息。

    [Description(“输入一个字符串”)]

    Public string Para1

    {

           get{

    return ((string)(base.GetValue(Activity1.Para1Property)));

    }

    set{

           base.SetValue(Activity1.Para1Property,value);

    }
    }

    在自定义活动的属性“Para1”上添加以下标签并将其值改为“false”,那么该自定义属性在属性窗口中就不在显示。

    [Browsable(false)]

     

    2 显示属性的提示信息

           用户还可以通过“DependencyProperty”属性的“PropertyMetadata”方法来为其设置默认值,代码如下所示。

    public      static       DependecyProperty para1Property=DependencyProperty.Register(“Para1”,typof(System.String),typeof(Activity1),new PropertyMetadata(“您好”));

     

    重新编译后,如图3所示,用户在属性窗口中就可以看到该属性的默认值“你好!”。

    3 为属性设置默认值

  • 相关阅读:
    判断
    迭代器
    如何关闭弹框以外的区域来关闭弹框?
    如何使APP端的滑动事件兼容PC端?
    获取元素相对于视窗的位置?
    如何获取一个元素没有在style和样式表中设置的样式的值?
    如何寻找一个数值数组中的最大元素?
    table表格中字母和数字如何换行?
    js中将字符串作为函数名来调用的方法
    web开发中如何使用引用字体
  • 原文地址:https://www.cnblogs.com/meiweijun/p/1609065.html
Copyright © 2011-2022 走看看