自定义活动覆盖双击并详细禁用打开活动

时间:2012-11-02 10:39:57

标签: workflow-foundation-4 workflow-activity activitydesigner

我正在使用自定义Activity并重写OnMouseDoubleClick方法。一切都很好,但双击Activity后就是自己在设计师中展示了。这意味着在设计器中没有显示整个工作流程而只显示此活动。如何在自定义设计器中禁用自行打开活动。 这是我在ActivityDesigner.xaml.cs

中的代码
    /// <summary>
    /// Raises the <see cref="E:System.Windows.Controls.Control.MouseDoubleClick"/> routed event.
    /// </summary>
    /// <param name="e">The event data.</param>
    protected override void OnMouseDoubleClick(MouseButtonEventArgs e)
    {
        e.Handled = true;
        this.OpenDialogOnDoubleClick();
    }

1 个答案:

答案 0 :(得分:1)

要禁用该行为,您必须使用ActivityDesignerOptionsAttribute,特别是其AllowDrillIn属性。

在您的活动类上使用它:

[ActivityDesignerOptions(AllowDrillIn = false)]
public sealed class MyActivity : CodedActivity
{
    /* ... */
}


或者,如果您使用的是IRegisterMetadata

internal class Metadata : IRegisterMetadata
{
    private AttributeTable attributes;

    // Called by the designer to register any design-time metadata.
    public void Register()
    {
        var builder = new AttributeTableBuilder();

        builder.AddCustomAttributes(
            typeof(MyActivity),
            new ActivityDesignerOptionsAttribute{ AllowDrillIn = false });

        MetadataStore.AddAttributeTable(builder.CreateTable());
    }
}