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工作流。
本文转自麒麟博客园博客,原文链接:http://www.cnblogs.com/zhuqil/archive/2009/07/08/1519458.html,如需转载请自行联系原作者