1

这篇文章的意图:

我意识到 Workflow Foundation 在 StackOverflow 上并不是很受欢迎,而且可能不会有很多答案,或者根本没有。这篇文章旨在为尝试通过自定义设计器类自定义工作流活动外观的人们提供资源。


目标:

我正在尝试为工作流活动创建一个自定义设计器类,以实现以下目标:

  1. 让活动看起来不那么技术性。例如,我不一定希望将内部对象名称视为活动的“标题”——相反,我希望看到更具描述性的内容。

  2. 在标题文本下方显示某些属性的值。我想直接在标题下方查看一些属性的值,这样我就不需要查看其他地方(即在“属性”窗口中)。

  3. 提供自定义放置区域并绘制自定义内部箭头。例如,我希望能够在非常特定的地方拥有自定义放置区域。


到目前为止我发现了什么:

我创建了一个自定义设计器类,其派生SequentialActivityDesigner如下:

[Designer(typeof(SomeDesigner))]
public partial class SomeActivity: CompositeActivity
{
    ...
}

class PlainDesigner : SequentialActivityDesigner
{
    ...
}

通过重写一些属性和OnPaint方法,我发现了以下属性之间的对应关系以及活动将如何显示:

显示 SequentialActivityDesigner 的某些属性与显示的活动之间关系的图表。
图 1. an 的某些属性SequentialActivityDesigner与显示的活动之间的关系。

目标 #1(使活动看起来不那么技术性)和目标 #2(在标题文本下方显示属性值)的可能解决方案:

  • 显示的标题可以通过Title属性进行更改。

  • 如果需要更多空间来显示标题下方的附加信息,则TitleHeight可以增加属性(即,覆盖属性并使其返回base.TitleHeight + n,其中n是某个正整数)。

  • 覆盖该OnPaint方法并在通过 . 保留的区域中绘制附加文本TitleHeight


开放式问题:

  • 连接器、连接件和连接点是做什么用的?它们似乎是必要的,但目的是什么?

  • 虽然可以通过该GetDropTargets方法获得放置目标,但这似乎不一定是设计人员实际放置放置活动的位置。当一个活动被拖过工作流时,设计器会显示一些绿色的加号,可以删除活动;它如何确定这些加号的位置?

  • 设计师如何确定在哪里绘制连接线和箭头?

4

1 回答 1

2

除非你有一个非常非常好的理由将大量(这将是巨大的)注入 WF 3.5,否则不要这样做。请改用 WF4。WF4 使您可以更好地控制 WPF 使用 Xaml 呈现的活动的外观。

WF 3.5 技术性很强,对用户来说非常可怕。WF4 旨在解决这些问题,这似乎符合您的目标。

于 2010-04-25T17:52:15.960 回答