Exemple #1
0
        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);
        }
Exemple #2
0
        protected override void OnAttachedComponentModel()
        {
            base.OnAttachedComponentModel();

            if (GlobalModels.HasModel(this.Model.Page))
            {
                pageBox.SelectedItem = GlobalModels.GetModel <PObject>(this.Model.Page);
            }
        }
Exemple #3
0
        private void GlobalModels_UnRegistering(object sender, Guid e)
        {
            PObject obj = GlobalModels.GetModel <PObject>(e);

            if (obj is PContentPage page)
            {
                this.PageList.Remove(page);
            }
        }
Exemple #4
0
        private void GlobalModels_Registered(object sender, Guid e)
        {
            PObject obj = GlobalModels.GetModel <PObject>(e);

            if (obj is PContentPage page)
            {
                this.PageList.Add(page);
            }
        }
Exemple #5
0
        private void GlobalModels_UnRegistering(object sender, Guid e)
        {
            PObject obj = GlobalModels.GetModel <PObject>(e);

            if (obj is PTemplatePage template)
            {
                this.TemplateList.Remove(template);
            }
        }
Exemple #6
0
        private void GlobalModels_Registered(object sender, Guid e)
        {
            PObject obj = GlobalModels.GetModel <PObject>(e);

            if (obj is PTemplatePage template)
            {
                this.TemplateList.Add(template);
            }
        }
Exemple #7
0
        protected override void OnAttachedComponentModel()
        {
            base.OnAttachedComponentModel();

            if (GlobalModels.HasModel(this.Model.Template))
            {
                templateBox.SelectedItem = GlobalModels.GetModel <PTemplatePage>(this.Model.Template);
            }
        }
Exemple #8
0
        public SelectorRenderer(ObjectSelector adornedElement, PSelector model) : base(adornedElement, model)
        {
            if (this.Model.TargetVisual != null)
            {
                var registedModel = GlobalModels.GetModel <PVisual>(this.Model.TargetVisual.Guid);

                this.Model.TargetVisual = registedModel;
            }
        }
Exemple #9
0
        public static IRenderer GetRendererFromGuid(this Guid guid)
        {
            if (GlobalModels.HasModel(guid))
            {
                PObject model = GlobalModels.GetModel <PObject>(guid);

                return(model.GetRenderer());
            }

            return(null);
        }
Exemple #10
0
        private void DestroyElement(FrameworkElement parent, FrameworkElement element)
        {
            IRenderer childRenderer = element.GetRenderer();

            // Unregister On Shared model store
            GlobalModels.UnRegister(childRenderer.Model);

            // Dispose
            if (childRenderer is IDisposable disposable)
            {
                disposable.Dispose();
            }

            element.SetRenderer(null);
            childRenderer.Model.SetRenderer(null);
            RendererManager.ResolveBinder(childRenderer).SetRenderer(null);
        }