private static SceneElement PasteElement(SceneViewModel viewModel, SceneElement element, List <PasteCommand.DelayedElementTranslationInfo> elementsToTranslateLater, ISceneInsertionPoint insertionPoint) { SceneNodeIDHelper sceneNodeIdHelper = new SceneNodeIDHelper(viewModel, (SceneNode)insertionPoint.SceneNode.StoryboardContainer); SceneElement element1 = (SceneElement)null; using (viewModel.ForceBaseValue()) { PasteCommand.StripStoryboardsAndTriggers(element); PasteCommand.StripExtraNamespaces(element); BaseFrameworkElement frameworkElement = element as BaseFrameworkElement; if (frameworkElement != null || element is DataGridColumnNode) { if (!(insertionPoint.SceneElement is Viewport3DElement) && !(insertionPoint.SceneElement is Base3DElement)) { if (insertionPoint.CanInsert((ITypeId)element.Type)) { if (!PlatformTypes.FrameworkTemplate.IsAssignableFrom((ITypeId)insertionPoint.SceneElement.Type) && (!PlatformTypes.UserControl.Equals((object)insertionPoint.SceneElement.Type) || insertionPoint.SceneElement.DocumentNode.DocumentRoot.RootNode != insertionPoint.SceneElement.DocumentNode)) { if (element.Name != null) { string validCopiedElementId = sceneNodeIdHelper.GetValidCopiedElementID((SceneNode)element, element.Name); sceneNodeIdHelper.SetLocalName((SceneNode)element, validCopiedElementId); } sceneNodeIdHelper.FixNameConflicts((SceneNode)element); } if (viewModel.DesignerContext.PrototypingService != null) { viewModel.DesignerContext.PrototypingService.ProcessElementBeforeInsertion(insertionPoint, element); } insertionPoint.Insert((SceneNode)element); if (element.GetLocalValue(DesignTimeProperties.LayoutRectProperty) != null && frameworkElement != null) { elementsToTranslateLater.Add(new PasteCommand.DelayedElementTranslationInfo(frameworkElement)); } element1 = element; } } else if (element.TargetType == typeof(Image)) { GeometryModel3DElement geometryModel3Delement = GeometryCreationHelper3D.ConvertImageTo3D(viewModel, frameworkElement, element.Name); IChildContainer3D childContainer3D = insertionPoint.SceneElement as IChildContainer3D; if (childContainer3D != null) { childContainer3D.AddChild(viewModel, (Base3DElement)geometryModel3Delement); element1 = (SceneElement)geometryModel3Delement; } } } else { Base3DElement child; if ((child = element as Base3DElement) != null) { if (child.Name != null) { string validCopiedElementId = sceneNodeIdHelper.GetValidCopiedElementID((SceneNode)child, child.Name); sceneNodeIdHelper.SetLocalName((SceneNode)child, validCopiedElementId); } DependencyPropertyReferenceStep propertyReferenceStep = insertionPoint.Property as DependencyPropertyReferenceStep; if (propertyReferenceStep != null && propertyReferenceStep.DependencyProperty == ModelVisual3D.ContentProperty) { Model3DElement model3Delement = BaseElement3DCoercionHelper.CoerceToModel3D(viewModel, (SceneElement)child); if (model3Delement != null) { insertionPoint.Insert((SceneNode)model3Delement); element1 = (SceneElement)model3Delement; } } else { IChildContainer3D childContainer3D = insertionPoint.SceneElement as IChildContainer3D; if (childContainer3D != null) { element1 = childContainer3D.AddChild(viewModel, child); } } } } if (element1 != null) { if (!(viewModel.ActiveEditingContainer is FrameworkTemplateElement)) { PasteCommand.StripTemplateBindings(element1); } } } return(element1); }