上个礼拜,我遇到了一个很有趣的问题:如何将C#定义的工作流转换为xaml的。一个参加Essential Windows Workflow Foundation 4课程的合作伙伴在使用WF设计器遇到了很多问题。所以他决定用 C#创建工作流程,而不是用设计器来产生xaml文件。虽然这样运行得非常好,但是这样失去了可视化的设计,而可视化的设计是工作流最重要的一点。
幸运的是保存工作流对象却不是很难。他们已经做到了,就是通过使用XamlServices将C#流程对象转化为xaml。
例如:使用下面C#代码创建一个流程:
var workflow
=
new
Sequence();
workflow.Activities.Add(
new
WriteLine() { Text
=
"
Hello workflow.
"
});
workflow.Activities.Add(
new
Persist());
workflow.Activities.Add(
new
If()
{
Condition
=
new
VisualBasicValue
<
bool
>
(
"
System.DateTime.Now.Hour < 12
"
),
Then
=
new
WriteLine() { Text
=
"
Good morning
"
},
Else
=
new
WriteLine() { Text
=
"
Good afternoon
"
}
});
workflow.Activities.Add(
new
WriteLine()
{
Text
=
new
VisualBasicValue
<
string
>
(
"
\
"
The current time
is
: \
"
& System.DateTime.Now.ToLongTimeString()
"
)
});
仅仅使用下面这句代码就能将它转换成xaml文件。
XamlServices.Save(
@"
..\..\demo.xaml
"
, workflow);
运行上面代码,你就可以得带C#代码对应的图形化xaml文件了。
![]()
接下来你就可以继续使用设计器完善此流程了。
本文转自麒麟博客园博客,原文链接:http://www.cnblogs.com/zhuqil/archive/2010/09/30/converting-a-c-workflow-into-xaml.html,如需转载请自行联系原作者