我有一個名爲「Parameter」的自定義類和一個名爲「Parameters」的通用集合屬性的自定義活動,我想爲其中一個參數設置綁定通用的參數屬性列表,我已經嘗試過與activitybind,但它不工作,有沒有辦法與工作流基礎做到這一點?請參見下面的代碼:如何在工作流基礎中爲自定義活動的通用屬性設置綁定
public class Parameter:DependencyObject //A Class
{
public string Name
{
get { return (string)GetValue(NameProperty); }
set { SetValue(NameProperty, value); }
}
// Using a DependencyProperty as the backing store for Name. This enables animation, styling, binding, etc...
public static readonly DependencyProperty NameProperty =
DependencyProperty.Register("Name", typeof(string), typeof(Parameter));
public string Value
{
get { return (string)GetValue(ValueProperty); }
set { SetValue(ValueProperty, value); }
}
// Using a DependencyProperty as the backing store for Value. This enables animation, styling, binding, etc...
public static readonly DependencyProperty ValueProperty =
DependencyProperty.Register("Value", typeof(string), typeof(Parameter));
}
//自定義活動與一般的財產
public partial class Activity1 : System.Workflow.ComponentModel.Activity
{
public Activity1()
{
InitializeComponent();
}
protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
{
return base.Execute(executionContext);
}
public List<Parameter> Parameters
{
get { return (List<Parameter>)GetValue(ParametersProperty); }
set { SetValue(ParametersProperty, value); }
}
// Using a DependencyProperty as the backing store for Parameters. This enables animation, styling, binding, etc...
public static readonly DependencyProperty ParametersProperty =
DependencyProperty.Register("Parameters", typeof(List<Parameter>), typeof(Activity1));
//設計器代碼
#region Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
[System.Diagnostics.DebuggerNonUserCode]
private void InitializeComponent()
{
this.CanModifyActivities = true;
this.activity12 = new ActivityLibrary1.Activity1();
this.activity11 = new ActivityLibrary1.Activity1();
List<Parameter> paras1 = new List<Parameter>();
paras1.Add(new Parameter() { Name = "a", Value = "a" });
paras1.Add(new Parameter() { Name = "b", Value = "b" });
List<Parameter> paras2 = new List<Parameter>();
paras2.Add(new Parameter() { Name = "c", Value = "c" });
paras2.Add(new Parameter() { Name = "d", Value = "d" });
//
// activity12
//
this.activity12.Name = "activity12";
this.activity12.Parameters = paras1;
//
// activity11
//
this.activity11.Name = "activity11";
this.activity11.Parameters = paras2;
ActivityBind bind = new ActivityBind();
bind.Name = activity11.Name;
bind.Path = "Parameters[0].Value";
activity12.Parameters[0].SetBinding(Parameter.ValueProperty, bind);
//
// Workflow1
//
this.Activities.Add(this.activity11);
this.Activities.Add(this.activity12);
this.Name = "Workflow1";
this.CanModifyActivities = false;
}
#endregion
private ActivityLibrary1.Activity1 activity12;
private ActivityLibrary1.Activity1 activity11;