Exemple #1
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;
        }
        public void Insert(SceneNode nodeToInsert)
        {
            ISceneNodeCollection <SceneNode> collectionForProperty = this.SceneNode.GetCollectionForProperty((IPropertyId)this.Property);

            if (collectionForProperty.FixedCapacity.HasValue && collectionForProperty.Count >= collectionForProperty.FixedCapacity.Value)
            {
                PropertySceneInsertionPoint.Cleanup(collectionForProperty[collectionForProperty.Count - 1]);
            }
            collectionForProperty.Add(nodeToInsert);
            ControlTemplateElement controlTemplateElement = this.SceneNode as ControlTemplateElement;

            if (controlTemplateElement == null)
            {
                return;
            }
            ITypeId templateTargetTypeId = controlTemplateElement.ControlTemplateTargetTypeId;

            VisualStateManagerSceneNode.AddDefaultStates(nodeToInsert, (SceneNode)controlTemplateElement, templateTargetTypeId);
        }