void PrepareTool(MyFooNode node, bool drag) { if (node != null) { //Get the Type we want to use for the MyFooNode being dragged out here. Type type = GetTypeForFooType(node.FooType); var tool = new CreateComponentTool(type); if (MyDesignerModel.Instance.DesignSurface != null) { MyDesignerModel.Instance.DesignSurface.DesignContext.Services.Tool.CurrentTool = tool; if (drag) { DragDrop.DoDragDrop(this, tool, DragDropEffects.Copy); } } } }