Workflow 工作流活动

Workflow 工作流活动,workflow,workflow-foundation,workflow-activity,Workflow,Workflow Foundation,Workflow Activity,假设我有一个自定义活动,它具有GUID类型的依赖项属性 我希望在我的自定义设计器中显示一个组合框(或我自己的usercontrol),可以从中选择可能的值(这些值应该来自数据库) 这可能吗 您需要创建一个UITypeEditor。以下是combox编辑器的模板:- public class MyCustomEditor : UITypeEditor { public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorCont

假设我有一个自定义活动,它具有GUID类型的依赖项属性

我希望在我的自定义设计器中显示一个组合框(或我自己的usercontrol),可以从中选择可能的值(这些值应该来自数据库)


这可能吗

您需要创建一个
UITypeEditor
。以下是combox编辑器的模板:-

public class MyCustomEditor : UITypeEditor
{
  public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
  {
    return UITypeEditorEditStyle.DropDown;
  }
  public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider)
  {
    var editorService = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
    var list = new ListBox();

    // Your code here to populate the list box with your items

    EventHandler onclick = (sender, e) => {
      editiorService.CloseDropDown();
    };

    list.Click += onclick;

    myEditorService.DropDownControl(list);

    list.Click -= onclick;

    return (list.SelectedItem != null) ? list.SelectedItem : Guid.Empty;
  }
}
在活动中的您的财产上:-

[Editor(typeof(MyCustomEditor), typeof(UITypeEditor)]
public Guid MyGuidValue
{
    get { return (Guid)GetValue(MyGuidValueProperty); }
    set { SetValue(MyGuidValueProperty, value); }
}
  • 编辑器
    属性将告诉PropertyGrid您已为此属性创建了自定义编辑器
  • 编辑器的
    GetEditStyle
    方法告诉属性网格在属性值上显示一个下拉按钮
  • 单击时,属性网格将调用自定义编辑器的
    EditValue
    方法
  • 编辑器服务用于使用
    DropDownControl
    方法显示下拉列表,该方法接受要在下拉区域中显示的控件
  • DropDownControl
    方法将阻塞,直到调用编辑器服务
    CloseDropDown
    方法

谢谢Anthony,我会试试的。你知道列表复选框是否可行吗?或者甚至我的自定义控件?您可以将几乎所有喜欢的控件传递给DropDownControl,包括您自己的自定义控件。