I have a custom class called "Parameter" and a custom activity with generic collection property called "Parameters", and I want to set bindings for one of Parameters in the generic list of Parameters Property,I've tried with activitybind, but it is not working, is there any way to do it with workflow foundation? please see codes below:
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));
}
//A Custom Activity with generic property
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));
//Designer Code
#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;