如何将xaml活动拖放到WF4重新设计的设计器?

时间:2010-12-30 03:16:44

标签: .net wpf drag-and-drop workflow-foundation workflow-foundation-4

我理解WorkflowDesigner可以通过多种方式接收拖动的项目,例如:

  • 通过从工具箱中拖动项目并将其放在设计器上:该类型的空活动将插入设计器的放置位置。
  • 还可以从设计器拖动活动并将其放在设计器中的其他位置,拖动的活动也将插入放置位置。

是否有可能类似于这两种拖放机制,我可以将xaml活动拖到设计器中?我想到的是这个,

假设您有一个包含多个xaml文件的ListView。我希望能够拖动其中一个ListView项(即其中一个xaml文件),当我将它拖到设计器上时,它就好像我从工具箱中拖出一些东西(除了活动将是从xaml提供)。我知道我可以使用Activity从文件创建运行时ActivityXamlServices.Load(filename),我希望将此活动插入到放置位置。但是当我拖放时如何告诉应用程序理解这一点?

2 个答案:

答案 0 :(得分:1)

鉴于WorkflowDesigner designerActivity activity和拖动来源dataSource,请使用此代码(信用到tilovell

ModelItem mi = designer.Context.Services.GetService<ModelTreeManager>()
    .CreateModelItem(null, activity);
DataObject data = new DataObject(DragDropHelper.ModelItemDataFormat, mi);
DragDrop.DoDragDrop(dataSource, data, DragDropEffects.Copy);

应用程序将进入拖放模式。设计师将收到drop作为活动。

答案 1 :(得分:0)

您无法执行此操作,因为需要编译添加到工作流的活动。当您在VS2010中创建XAML活动并编译项目时,生成的编译活动类型将添加到工具箱中,而不是对您创建的XAML文件的引用。

相关问题