示例#1
0
        public BaseFrameworkElement GetRelativeTargetElement(DocumentNodePath relativeEditingContainerPath)
        {
            if (relativeEditingContainerPath.ContainerNode != this.DocumentNode)
            {
                return((BaseFrameworkElement)null);
            }
            DocumentNodePath containerOwnerPath = relativeEditingContainerPath.GetContainerOwnerPath();

            if (containerOwnerPath == null)
            {
                return((BaseFrameworkElement)null);
            }
            SetterSceneNode setterSceneNode = this.ViewModel.GetSceneNode(containerOwnerPath.Node) as SetterSceneNode;

            if (setterSceneNode == null)
            {
                return(this.ViewModel.GetSceneNode(containerOwnerPath.Node) as BaseFrameworkElement);
            }
            IStoryboardContainer storyboardContainer = (IStoryboardContainer)this.ViewModel.GetSceneNode(containerOwnerPath.ContainerNode);
            SceneNode            sceneNode           = storyboardContainer.ResolveTargetName(setterSceneNode.Target);

            if (sceneNode == storyboardContainer)
            {
                return(storyboardContainer.TargetElement);
            }
            return(sceneNode as BaseFrameworkElement);
        }
示例#2
0
        public override IProperty GetPropertyForChild(SceneNode child)
        {
            if (child == null)
            {
                throw new ArgumentNullException("child");
            }
            if (!(this.DocumentNode is DocumentCompositeNode))
            {
                throw new InvalidOperationException(ExceptionStringTable.SceneNodeMustBeCompositeForLogicalChild);
            }
            IProperty        property         = (IProperty)null;
            DocumentNodePath documentNodePath = child.DocumentNodePath;

            if (documentNodePath.ContainerNode == documentNodePath.Node)
            {
                SetterSceneNode setterSceneNode = this.ViewModel.GetSceneNode(documentNodePath.ContainerOwner) as SetterSceneNode;
                if (setterSceneNode != null)
                {
                    property = (IProperty)setterSceneNode.Property;
                }
            }
            else
            {
                property = base.GetPropertyForChild(child);
            }
            return(property);
        }
示例#3
0
        private void SetSetterValue(DependencyPropertyReferenceStep referenceStep, DocumentNode setterValue)
        {
            foreach (SceneNode sceneNode in (IEnumerable <SceneNode>) this.Setters)
            {
                SetterSceneNode setterSceneNode = sceneNode as SetterSceneNode;
                if (setterSceneNode != null && setterSceneNode.Property == referenceStep)
                {
                    if (setterValue != null)
                    {
                        ((DocumentCompositeNode)setterSceneNode.DocumentNode).Properties[SetterSceneNode.ValueProperty] = setterValue;
                        return;
                    }
                    this.Setters.Remove((SceneNode)setterSceneNode);
                    return;
                }
            }
            if (setterValue == null)
            {
                return;
            }
            SetterSceneNode setterSceneNode1 = (SetterSceneNode)this.ViewModel.CreateSceneNode(PlatformTypes.Setter);

            setterSceneNode1.Property = referenceStep;
            ((DocumentCompositeNode)setterSceneNode1.DocumentNode).Properties[SetterSceneNode.ValueProperty] = setterValue;
            this.Setters.Add((SceneNode)setterSceneNode1);
        }
示例#4
0
        private void ResolveTemplate(SetterSceneNode setter)
        {
            DocumentNode node1 = ((DocumentCompositeNode)setter.DocumentNode).Properties[SetterSceneNode.ValueProperty];

            if (node1 != null && !PlatformTypes.FrameworkTemplate.IsAssignableFrom((ITypeId)node1.Type))
            {
                DocumentCompositeNode node2 = node1 as DocumentCompositeNode;
                if (node2 != null)
                {
                    DocumentNode resourceKey = ResourceNodeHelper.GetResourceKey(node2);
                    if (resourceKey != null)
                    {
                        node1 = this.CreateNode(this.ViewModel.FindResource(this.ViewModel.CreateInstance(new DocumentNodePath(resourceKey, resourceKey))));
                    }
                }
            }
            if (node1 == null)
            {
                return;
            }
            ControlTemplateElement controlTemplateElement = this.ViewModel.GetSceneNode(node1) as ControlTemplateElement;

            if (controlTemplateElement != null)
            {
                controlTemplateElement.RenameTemplateIDs();
            }
            ((DocumentCompositeNode)setter.DocumentNode).Properties[SetterSceneNode.ValueProperty] = node1;
        }
示例#5
0
        private string GetPropertyName(DocumentNodePath documentNodePath)
        {
            SetterSceneNode setterSceneNode = this.Parent as SetterSceneNode;

            if (setterSceneNode != null && setterSceneNode.Property != null)
            {
                return(setterSceneNode.Property.Name);
            }
            return(this.GetPropertyNameHelper(documentNodePath) ?? this.TargetType.Name);
        }
示例#6
0
        public string GetUndoString(object obj)
        {
            SetterSceneNode setterSceneNode = obj as SetterSceneNode;

            if (setterSceneNode != null)
            {
                return(setterSceneNode.Property.Name);
            }
            return("");
        }
示例#7
0
 private DocumentNode GetSetterValue(DependencyPropertyReferenceStep referenceStep)
 {
     foreach (SceneNode sceneNode in (IEnumerable <SceneNode>) this.Setters)
     {
         SetterSceneNode setterSceneNode = sceneNode as SetterSceneNode;
         if (setterSceneNode != null && setterSceneNode.Property == referenceStep)
         {
             return(((DocumentCompositeNode)setterSceneNode.DocumentNode).Properties[SetterSceneNode.ValueProperty]);
         }
     }
     return((DocumentNode)null);
 }
示例#8
0
        public BaseFrameworkElement GetRelativeTargetElement(DocumentNodePath relativeEditingContainerPath)
        {
            if (relativeEditingContainerPath.ContainerNode != this.DocumentNode)
            {
                return((BaseFrameworkElement)null);
            }
            DocumentNodePath containerOwnerPath = relativeEditingContainerPath.GetContainerOwnerPath();

            if (containerOwnerPath == null)
            {
                return((BaseFrameworkElement)null);
            }
            SetterSceneNode setterSceneNode = this.ViewModel.GetSceneNode(containerOwnerPath.Node) as SetterSceneNode;

            if (setterSceneNode != null)
            {
                return(((ITriggerContainer)this.ViewModel.GetSceneNode(containerOwnerPath.ContainerNode)).ResolveTargetName(setterSceneNode.Target) as BaseFrameworkElement);
            }
            return(this.ViewModel.GetSceneNode(containerOwnerPath.Node) as BaseFrameworkElement);
        }
示例#9
0
        private string GetPropertyName(DocumentNodePath documentNodePath)
        {
            SetterSceneNode setterSceneNode = (SetterSceneNode)null;
            DocumentNode    documentNode    = this.DocumentNode;

            if (documentNode.Parent == null || documentNode == documentNodePath.ContainerNode)
            {
                setterSceneNode = this.ViewModel.GetSceneNode(documentNodePath.ContainerOwner) as SetterSceneNode;
            }
            if (documentNode.IsChild)
            {
                documentNode = (DocumentNode)documentNode.Parent;
            }
            if (documentNode.Parent != null)
            {
                setterSceneNode = this.ViewModel.GetSceneNode((DocumentNode)documentNode.Parent) as SetterSceneNode;
            }
            if (setterSceneNode != null && setterSceneNode.Property != null)
            {
                return(setterSceneNode.Property.Name);
            }
            return(this.GetPropertyNameHelper(documentNodePath) ?? this.Type.Name);
        }
示例#10
0
        public void SetDocumentNodeValue(DocumentCompositeNode compositeNode, IPropertyId propertyKey, DocumentNode valueNode)
        {
            string id = this.GetID(compositeNode);

            if (id != null)
            {
                ISceneNodeCollection <SceneNode> setters = this.Setters;
                int index = 0;
                while (index < setters.Count)
                {
                    if (this.IsSetter((DocumentCompositeNode)setters[index].DocumentNode, id, propertyKey))
                    {
                        setters.RemoveAt(index);
                    }
                    else
                    {
                        ++index;
                    }
                }
                if (valueNode == null)
                {
                    return;
                }
                SetterSceneNode setterSceneNode = (SetterSceneNode)this.ViewModel.CreateSceneNode(typeof(Setter));
                if (!this.IsRootNode((DocumentNode)compositeNode))
                {
                    setterSceneNode.Target = id;
                }
                setterSceneNode.Property = (DependencyPropertyReferenceStep)propertyKey;
                ((DocumentCompositeNode)setterSceneNode.DocumentNode).Properties[SetterSceneNode.ValueProperty] = valueNode;
                setters.Add((SceneNode)setterSceneNode);
            }
            else
            {
                compositeNode.Properties[propertyKey] = valueNode;
            }
        }