WF中从XAML文件动态创建工作流
1. 把单独的WF(4.0.2)项目属性设置为“类库”,XAML属性设置为图1所示:
图1 XAML文件属性设置
2.修改生成的XAML中自定义Activity对应的namespace和assembly:
原始代码:
xmlns:local="clr-namespace:TestStateMachines"
改为:
xmlns:local="clr-namespace:TestStateMachines;assembly=TestStateMachines"
3. 生成dll,在WCF中引用dll。加载XAML前要设置XamlXmlReaderSettings,本例中WF中有个自定义的BookMark:MyBookmark。
var settings = new XamlXmlReaderSettings() { LocalAssembly = typeof(TestStateMachines.MyBookmark).Assembly }; XamlXmlReader xamlreader =new XamlXmlReader(XAMLmemoryStream1,settings);//XAMLmemoryStream1: XAML文件的MemoryStream WorkflowApplication instance; instance = new WorkflowApplication(ActivityXamlServices.Load(xamlreader));