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 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);
}
}
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);
}
}