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); }