zoukankan      html  css  js  c++  java
  • 使用WorkflowDesigner中遇到的一些问题,记录一下

    WorkflowDesigner 类

    定义

    提供设计器画布,该设计器画布呈现工作流模型正在设计时的可视表示形式。

    属性

    表 2
    Context

    获取 EditingContext 对象,该对象是包含在设计器中的所有元素之间的服务共享集合,并用于在主机和设计器之间交互。 服务是通过 EditingContext 发布和请求的。

    ContextMenu

    获取此设计器的上下文菜单。

    DebugManagerView

    获取用于运行时调试的 DebuggerService

    OutlineView

    获取工作流设计器视图的大纲视图。

    PropertyInspectorFontAndColorData

    以序列化的字典格式设置属性检查器的字体和颜色数据。

    PropertyInspectorView

    获取通常称为属性网格的属性检查器。

    Text

    获取或设置工作流的 XAML 字符串表示形式。

    View

    获取允许用户直观地查看和编辑工作流的 UI 元素。 此 UI 元素通常称为工作流画布。

    方法

    表 3
    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)

    事件

    表 4
    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:表达式编辑器没有智能提示(解决中)

  • 相关阅读:
    [Swift通天遁地]四、网络和线程-(13)创建一个Socket客户端
    [Swift通天遁地]四、网络和线程-(12)使用ReachabilitySwift实现对网络状态的检测
    [Swift通天遁地]四、网络和线程-(11)将服务器返回的JSON映射为实例对象
    [Swift]LeetCode972.相等的有理数 | Equal Rational Numbers
    [Swift]LeetCode971.翻转二叉树以匹配先序遍历 | Flip Binary Tree To Match Preorder Traversal
    [Swift]LeetCode969.煎饼排序 | Pancake Sorting
    [Swift]LeetCode970.强整数 | Powerful Integers
    [SQL]LeetCode262.行程和用户 | Trips and Users
    [Swift]LeetCode261.图验证树 $ Graph Valid Tree
    [Swift]LeetCode260. 只出现一次的数字 III | Single Number III
  • 原文地址:https://www.cnblogs.com/MarcLiu/p/12881599.html
Copyright © 2011-2022 走看看