private static FrameworkElement CreateVisualRendererCore(ExportRendererAttribute rendererAttr, PObject model, Point position) { var view = (FrameworkElement)Activator.CreateInstance(rendererAttr.ViewType); var renderer = (IRenderer)Activator.CreateInstance(rendererAttr.RendererType, view, model); if (model.Guid.Equals(Guid.Empty)) { model.Guid = Guid.NewGuid(); } GlobalModels.Register(model.Guid, model); // metadata setting renderer.Metadata.CreatedTime = DateTime.Now; renderer.Metadata.CreatedPosition = position; view.DataContext = model; view.AddAdorner((Adorner)renderer, zindex: 1); // View <-> Model view.SetModel(model); model.SetView(view); // View, Model -> Renderer view.SetRenderer(renderer); model.SetRenderer(renderer); // BinderHost -> Renderer (renderer.GetBinderHost() as PBinderHost).SetRenderer(renderer); return(view); }
private ComponentElement CreateComponentElement() { if (!componentCache.ContainsKey(Model.Metadata.Element)) { ExportRendererAttribute rAttr = RendererManager.FromModelType(Model.Metadata.Element); var model = Activator.CreateInstance(rAttr.ModelType) as PComponent; var view = Activator.CreateInstance(rAttr.ViewType) as ComponentElement; view.SetIsFloating(true); view.SetComponentModel(model); view.HorizontalAlignment = HorizontalAlignment.Left; view.VerticalAlignment = VerticalAlignment.Top; view.Margin = new Thickness(10); componentCache[Model.Metadata.Element] = view; } var element = componentCache[Model.Metadata.Element]; if (element is Function functionElement) { var functionItemModel = Model as ToolBoxItemFunctionModel; functionElement.Model.SetRuntimeFunction(functionItemModel.MethodInfo); } return(element); }
public static FrameworkElement CreateVisualRenderer(ExportRendererAttribute rendererAttr, Point position) { if (rendererAttr == null) { MessageBox.Show("Coming soon!"); return(null); } var model = (PObject)Activator.CreateInstance(rendererAttr.ModelType); return(CreateVisualRendererCore(rendererAttr, model, position)); }