[WF4.0]工作流设计器Rehosting(三)
索引
正文
可以看到工具箱和属性窗口,但是不能进行拖放设计,还需要注册活动外观,让设计器知道如何响应相关操作,修改Window1.xaml.cs文件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Activities.Design;
using System.Activities.Design.Metadata;
using System.Activities.Statements;
using System.ComponentModel;
using System.Activities.Core.Design;
namespace WF4Designer
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
AddDesigner();
}
private void AddDesigner()
{
//注册活动外观
//var builder = new AttributeTableBuilder();
//builder.AddCustomAttributes(typeof(Flowchart),
// new DesignerAttribute(typeof(SequenceDesigner)));
//MetadataStore.AddAttributeTable(builder.CreateTable());
new DesignerMetadata().Register();
var wd = new WorkflowDesigner();
wd.Load(new Flowchart());
Grid.SetColumn(wd.View, 1);
gridview.Children.Add(wd.View);
ToolboxControl toolbox = new ToolboxControl();
toolbox.Categories.Add(new ToolboxCategoryItemsCollection
{
new ToolboxItemWrapper(typeof(FlowSwitch)),
new ToolboxItemWrapper(typeof(FlowDecision))
});
gridview.Children.Add(toolbox);
Grid.SetColumn(toolbox, 2);
Grid.SetColumn(wd.PropertyInspectorView, 0);
gridview.Children.Add(wd.PropertyInspectorView);
}
}
}
现在能够进行拖放操作了,需要注意的是必须在加载工作流之前注册外观元数据,否则不起作用;另外没有找到FlowchartDesigner,不知道用哪一个Designer来对应Flowchart,还好在MSDN论坛上看到有人解答了,使用new DesignerMetadata().Register()注册所有Designer,这样可以Rehosting Flowchart工作流。
从我的百度空间导入