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