程序采用 顺序工作流库+WPF的形式在工作库中 有一个 SequenceActivityContainer 其中包含3个 CodeActivity。这些都是在设计器中拖拽编辑生成的。类名叫做MyWorkFlow在MyWorkFlow类中添加了一个属性 public String ResultString { get; set; },并用Dictionary<string,object>方式预先传入一个字符串"aaa"3个 CodeActivity对应的 ExecuteCode 依次为执行 ResultString +="1" ResultString +="2" ResultString +="3"最终输出ResultString 不改变工作流,普通调用时,得到的结果是"aaa123"接下来,想在WPF中拖拽代表3个CodeActivity的图形,并且根据图形相对位置,决定他们的执行顺序。在相对位置取到之后,进行了如下代码的更改MyWorkFlowInArgs args = new MyWorkFlowInArgs("aaa");//传参数用的,忽略WorkflowRuntime wfRuntime = new WorkflowRuntime();WorkflowInstance myWorkflow = wfRuntime.CreateWorkflow(typeof(MyWorkFlow), args);WorkflowChanges wc = new WorkflowChanges(myWorkflow.GetWorkflowDefinition());CompositeActivity sequenceContainer = wc.TransientWorkflow.GetActivityByName("SequenceActivityContainer") as CompositeActivity;然后将SequenceActivityContainer内的3个Code活动,以他们的Name为键存入了一个Hashtable之后 sequenceContainer.Activities.Clear();然后在根据这三个活动新的顺序再装回SequenceActivityContainer中sequenceContainer.Activities.Add(...);最后 myWorkflow.ApplyWorkflowChanges(wc);myWorkflow.Start();这时候再运行程序,我只得到了"aaa"这个结果于是,向3个Code活动对应的方法中加入MessageBox弹出当前的ResultString 结果的得到的显示是 "1" "2" "3" "aaa"好像是3个活动各行其是了请教,有没有解决的办法,是不是我遗漏了什么。谢谢!
你好,
工作流中的属性传递和绑定,需要将属性定义为依赖属性,并做绑定,而不是简单赋值。
从问题现象来看,应用工作流更改之后,子活动CodeActivity并没有引用到正确的ResultString,所以它修改的并不是父活动的ResultString。
你可以从这个角度入手检查一下。
My blog: http://coding.windstyle.cn