Пример #1
0
        public virtual IList <SceneNode> CreateNodeTreeOnInsertion(SceneNode node)
        {
            List <SceneNode> list = new List <SceneNode>();

            list.Add(node);
            if (ProjectNeutralTypes.TabControl.IsAssignableFrom((ITypeId)node.Type))
            {
                ItemsControlElement itemsControlElement = (ItemsControlElement)node;
                SceneElement        sceneElement1       = (SceneElement)node.ViewModel.CreateSceneNode(ProjectNeutralTypes.TabItem);
                itemsControlElement.Items.Add((SceneNode)sceneElement1);
                list.AddRange((IEnumerable <SceneNode>) this.CreateNodeTreeOnInsertion((SceneNode)sceneElement1));
                SceneElement sceneElement2 = (SceneElement)node.ViewModel.CreateSceneNode(ProjectNeutralTypes.TabItem);
                itemsControlElement.Items.Add((SceneNode)sceneElement2);
                list.AddRange((IEnumerable <SceneNode>) this.CreateNodeTreeOnInsertion((SceneNode)sceneElement2));
            }
            else if (PlatformTypes.Popup.IsAssignableFrom((ITypeId)node.Type) || ProjectNeutralTypes.Expander.IsAssignableFrom((ITypeId)node.Type) || ProjectNeutralTypes.TabItem.IsAssignableFrom((ITypeId)node.Type))
            {
                GridElement         gridElement         = (GridElement)node.ViewModel.CreateSceneNode(PlatformTypes.Grid);
                SolidColorBrushNode solidColorBrushNode = (SolidColorBrushNode)node.ViewModel.CreateSceneNode(PlatformTypes.SolidColorBrush);
                solidColorBrushNode.SetValueAsWpf(SolidColorBrushNode.ColorProperty, (object)Color.FromArgb(byte.MaxValue, (byte)229, (byte)229, (byte)229));
                gridElement.SetValueAsSceneNode(PanelElement.BackgroundProperty, (SceneNode)solidColorBrushNode);
                SceneElement sceneElement = (SceneElement)node;
                if (sceneElement.DefaultInsertionPoint != null)
                {
                    sceneElement.DefaultInsertionPoint.Insert((SceneNode)gridElement);
                    list.Add((SceneNode)gridElement);
                    IExpandable expandable = node as IExpandable;
                    if (expandable != null)
                    {
                        expandable.EnsureExpandable();
                        if (sceneElement.ProjectContext.ResolveProperty(expandable.DesignTimeExpansionProperty) != null)
                        {
                            node.SetLocalValue(expandable.DesignTimeExpansionProperty, (object)true);
                        }
                    }
                }
            }
            return((IList <SceneNode>)list);
        }