使用WorkflowDesigner中遇到的一些问题,记录一下
WorkflowDesigner 类
定义
提供设计器画布,该设计器画布呈现工作流模型正在设计时的可视表示形式。
属性
Context |
获取 EditingContext 对象,该对象是包含在设计器中的所有元素之间的服务共享集合,并用于在主机和设计器之间交互。 服务是通过 EditingContext 发布和请求的。 |
ContextMenu |
获取此设计器的上下文菜单。 |
DebugManagerView |
获取用于运行时调试的 DebuggerService。 |
OutlineView |
获取工作流设计器视图的大纲视图。 |
PropertyInspectorFontAndColorData |
以序列化的字典格式设置属性检查器的字体和颜色数据。 |
PropertyInspectorView |
获取通常称为属性网格的属性检查器。 |
Text |
获取或设置工作流的 XAML 字符串表示形式。 |
View |
获取允许用户直观地查看和编辑工作流的 UI 元素。 此 UI 元素通常称为工作流画布。 |
方法
Equals(Object) |
确定指定的对象是否等于当前对象。 (继承自 Object) |
Flush() |
将工作流的当前状态保存到 Text 属性。 |
GetHashCode() |
作为默认哈希函数。 (继承自 Object) |
GetType() |
获取当前实例的 Type。 (继承自 Object) |
IsInErrorState() |
指示 Windows 工作流设计器 是否是错误状态。 |
Load() |
从 Text 属性中包含的 XAML 中加载工作流。 |
Load(Object) |
使用指定的实例加载工作流。 |
Load(String) |
从指定文件中包含的 XAML 中加载工作流。 |
MemberwiseClone() |
创建当前 Object 的浅表副本。 (继承自 Object) |
Save(String) |
将工作流保存到 XAML 文件。 |
ToString() |
返回表示当前对象的字符串。 (继承自 Object) |
事件
ModelChanged |
表示在工作流模型中的内容发生更改时生效的事件处理程序。 |
TextChanged |
在 Text 属性值更改时发生。 |
WorkflowDesigner主要是用来呈现和设计Activity,支持直接拖拽活动和编辑,用来在WPF界面上显示。
使用方法:
WorkflowDesigner wf = new WorkflowDesigner(); wf.Context.Services.GetService<DesignerConfigurationService>().TargetFrameworkName = new System.Runtime.Versioning.FrameworkName(".NETFramework", new Version(4, 5)); wf.Context.Services.GetService<DesignerConfigurationService>().LoadingFromUntrustedSourceEnabled = true; //load Workflow Xaml wf.Load("TestActivity.xaml"); gd.Children.Add(wf.View);//设计画布 gdOut.Children.Add(wf.OutlineView);//设计大纲 gdPro.Children.Add(wf.PropertyInspectorView);//设计属性栏
问题1:在加载完xaml后,加载的活动无法编辑,显示不正常,如图
正常加载应该如下图
解决办法:需要注册设计器的元数据
//associates all of the basic activities with their designers new DesignerMetadata().Register();
问题2:加载后代码编辑器无法使用,如图
解决办法:出现这种问题的原因是加载的xaml文件中把编辑器设置成了"C#",而默认的编辑器是VB编辑器,导致编辑器无法识别,删除对应代码即可。
附上默认xaml代码,其中第二行删除即可解决问题
(TODO可以添加自定义表达式编辑器,可参考https://www.cnblogs.com/zhuqil/archive/2010/02/03/implementing-a-custom-expression-editor.html)
1 <Activity mc:Ignorable="sap sap2010 sads" x:Class="RPAEditor.TestActivity" 2 sap2010:ExpressionActivityEditor.ExpressionActivityEditor="C#" 3 sap2010:WorkflowViewState.IdRef="RPAEditor.TestActivity_1" 4 xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities" 5 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 6 xmlns:sads="http://schemas.microsoft.com/netfx/2010/xaml/activities/debugger" 7 xmlns:sap="http://schemas.microsoft.com/netfx/2009/xaml/activities/presentation" 8 xmlns:sap2010="http://schemas.microsoft.com/netfx/2010/xaml/activities/presentation" 9 xmlns:scg="clr-namespace:System.Collections.Generic;assembly=mscorlib" 10 xmlns:sco="clr-namespace:System.Collections.ObjectModel;assembly=mscorlib" 11 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 12 <TextExpression.NamespacesForImplementation> 13 <sco:Collection x:TypeArguments="x:String"> 14 <x:String>System</x:String> 15 <x:String>System.Collections.Generic</x:String> 16 <x:String>System.Data</x:String> 17 <x:String>System.Linq</x:String> 18 <x:String>System.Text</x:String> 19 </sco:Collection> 20 </TextExpression.NamespacesForImplementation> 21 <TextExpression.ReferencesForImplementation> 22 <sco:Collection x:TypeArguments="AssemblyReference"> 23 <AssemblyReference>mscorlib</AssemblyReference> 24 <AssemblyReference>System</AssemblyReference> 25 <AssemblyReference>System.Core</AssemblyReference> 26 <AssemblyReference>System.Data</AssemblyReference> 27 <AssemblyReference>System.ServiceModel</AssemblyReference> 28 <AssemblyReference>System.Xml</AssemblyReference> 29 </sco:Collection> 30 </TextExpression.ReferencesForImplementation> 31 <Sequence sap2010:WorkflowViewState.IdRef="Sequence_1" sads:DebugSymbol.Symbol="dy5FOlxQcm9qZWN0XFJQQVRlc3RcUlBBRWRpdG9yXFRlc3RBY3Rpdml0eS54YW1sAR0DHW8CAQE=" /> 32 <sap2010:WorkflowViewState.ViewStateManager> 33 <sap2010:ViewStateManager> 34 <sap2010:ViewStateData Id="Sequence_1" sap:VirtualizedContainerService.HintSize="200,101"> 35 <sap:WorkflowViewStateService.ViewState> 36 <scg:Dictionary x:TypeArguments="x:String, x:Object"> 37 <x:Boolean x:Key="IsExpanded">True</x:Boolean> 38 </scg:Dictionary> 39 </sap:WorkflowViewStateService.ViewState> 40 </sap2010:ViewStateData> 41 <sap2010:ViewStateData Id="RPAEditor.TestActivity_1" sap:VirtualizedContainerService.HintSize="240,181" /> 42 </sap2010:ViewStateManager> 43 </sap2010:WorkflowViewState.ViewStateManager> 44 </Activity>
问题3:表达式编辑器没有智能提示(解决中)