阿宽

Nothing is more powerful than habit!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

WF中依赖属性的定义方法

Posted on 2010-10-22 08:59  宽田  阅读(551)  评论(0编辑  收藏  举报


WF中依赖属性特点:        

  依赖属性是属性值存储在一个中央存储库中。而不是实现为类中的普通实例变量。

  依赖属性的主要优势在于允许在运行时绑定属性值到实例数据。绑定所产生的属性实际值则是在运行时确定的。

  要想绑到两个活动的属生时,就需要使用依赖项属性。

WF中依赖属性定义的方法:

  定义某属性的依赖属性,需要用此“属性名”+“Property”的方式定义依赖属性,否则会出错。如下边代码给出了正确与错误的定义方法,可以对比一下。

 

正确定义方法:

        //正确
        public static DependencyProperty AccountIdProperty =
           System.Workflow.ComponentModel.DependencyProperty.Register("AccountId"
           
typeof(Int32), typeof(ValidateAccountActivity));

        
/// <summary>
        
/// 定单账户
        
/// </summary>
        [Description("Identifies the account")] //可视化设计器在引用组件成员时可以显示指定的说明
        [Category("CodeActive Example")]        //用于给属性或事件分组的类别的名称。
        [Browsable(true)]                       //指定一个属性 (Property) 或事件是否应显示在“属性”窗口中。
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]  //指定在设计时序列化组件上的属性 (Property) 时所使用的持久性类型。
        public Int32 AccountId
        {
            
get
            {
                
return ((Int32)(base.GetValue(Workflow1.AccountIdProperty)));
            }
            
set
            {
                
base.SetValue(Workflow1.AccountIdProperty, value);
            }
        }


 错误定义方法:

        //错误
        public static DependencyProperty AccountNamePperty =
          System.Workflow.ComponentModel.DependencyProperty.Register(
"AccountName"
          
typeof(Int32), typeof(ValidateAccountActivity));

        [Description(
"Identifies the accout")]
        [Category(
"Custom Activity Example")]
        [Browsable(
true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
        
public Int32 AccountName
        {
            
get
            {
                
return ((Int32)(base.GetValue(ValidateAccountActivity.AccountNamePperty)));
            }
            
set
            {
                
base.SetValue(ValidateAccountActivity.AccountNamePperty, value);
            }
        }