// Token: 0x06000693 RID: 1683 RVA: 0x00014CD4 File Offset: 0x00012ED4 internal FrameworkObject InstantiateUnoptimizedTree() { if (!this._sealed) { throw new InvalidOperationException(SR.Get("FrameworkElementFactoryMustBeSealed")); } FrameworkObject result = new FrameworkObject(this.CreateDependencyObject()); result.BeginInit(); ProvideValueServiceProvider provideValueServiceProvider = null; FrameworkTemplate.SetTemplateParentValues(this.Name, result.DO, this._frameworkTemplate, ref provideValueServiceProvider); FrameworkElementFactory frameworkElementFactory = this._firstChild; IAddChild addChild = null; if (frameworkElementFactory != null) { addChild = (result.DO as IAddChild); if (addChild == null) { throw new InvalidOperationException(SR.Get("TypeMustImplementIAddChild", new object[] { result.DO.GetType().Name })); } } while (frameworkElementFactory != null) { if (frameworkElementFactory._text != null) { addChild.AddText(frameworkElementFactory._text); } else { FrameworkObject childFrameworkObject = frameworkElementFactory.InstantiateUnoptimizedTree(); this.AddNodeToParent(result.DO, childFrameworkObject); } frameworkElementFactory = frameworkElementFactory._nextSibling; } result.EndInit(); return(result); }
///<summary> /// IServiceProvider GetService implementation ///</summary> ///<param name="serviceType"> /// Type of Service to be returned ///</param> ///<internalonly> /// member is public only because base class has /// this public member declared ///</internalonly> ///<returns> /// Service object or null if service is not found ///</returns> virtual public object GetService(Type serviceType) { if (serviceType == typeof(IUriContext)) { return(_parserContext as IUriContext); } // temporary code to optimize Paints.White etc, until this is done // in a more generic fashion in SolidPaint ctor else if (serviceType == typeof(string)) { return(_attribStringValue); } #if PBTCOMPILER return(null); #else // Check for the other provided services ProvideValueServiceProvider serviceProvider = _parserContext.ProvideValueProvider; return(serviceProvider.GetService(serviceType)); #endif }
// Token: 0x06000691 RID: 1681 RVA: 0x00014908 File Offset: 0x00012B08 internal DependencyObject InstantiateTree(UncommonField <HybridDictionary[]> dataField, DependencyObject container, DependencyObject parent, List <DependencyObject> affectedChildren, ref List <DependencyObject> noChildIndexChildren, ref FrugalStructList <ChildPropertyDependent> resourceDependents) { EventTrace.EasyTraceEvent(EventTrace.Keyword.KeywordXamlBaml, EventTrace.Level.Verbose, EventTrace.Event.WClientParseFefCrInstBegin); FrameworkElement frameworkElement = container as FrameworkElement; bool flag = frameworkElement != null; DependencyObject dependencyObject = null; if (this._text != null) { IAddChild addChild = parent as IAddChild; if (addChild == null) { throw new InvalidOperationException(SR.Get("TypeMustImplementIAddChild", new object[] { parent.GetType().Name })); } addChild.AddText(this._text); } else { dependencyObject = this.CreateDependencyObject(); EventTrace.EasyTraceEvent(EventTrace.Keyword.KeywordXamlBaml, EventTrace.Level.Verbose, EventTrace.Event.WClientParseFefCrInstEnd); FrameworkObject frameworkObject = new FrameworkObject(dependencyObject); Visual3D visual3D = null; bool flag2 = false; if (!frameworkObject.IsValid) { visual3D = (dependencyObject as Visual3D); if (visual3D != null) { flag2 = true; } } bool isFE = frameworkObject.IsFE; if (!flag2) { FrameworkElementFactory.NewNodeBeginInit(isFE, frameworkObject.FE, frameworkObject.FCE); if (StyleHelper.HasResourceDependentsForChild(this._childIndex, ref resourceDependents)) { frameworkObject.HasResourceReference = true; } FrameworkElementFactory.UpdateChildChains(this._childName, this._childIndex, isFE, frameworkObject.FE, frameworkObject.FCE, affectedChildren, ref noChildIndexChildren); FrameworkElementFactory.NewNodeStyledParentProperty(container, flag, isFE, frameworkObject.FE, frameworkObject.FCE); if (this._childIndex != -1) { StyleHelper.CreateInstanceDataForChild(dataField, container, dependencyObject, this._childIndex, this._frameworkTemplate.HasInstanceValues, ref this._frameworkTemplate.ChildRecordFromChildIndex); } if (this.HasLoadedChangeHandler) { BroadcastEventHelper.AddHasLoadedChangeHandlerFlagInAncestry(dependencyObject); } } else if (this._childName != null) { affectedChildren.Add(dependencyObject); } else { if (noChildIndexChildren == null) { noChildIndexChildren = new List <DependencyObject>(4); } noChildIndexChildren.Add(dependencyObject); } if (container == parent) { TemplateNameScope value = new TemplateNameScope(container); NameScope.SetNameScope(dependencyObject, value); if (flag) { frameworkElement.TemplateChild = frameworkObject.FE; } else { FrameworkElementFactory.AddNodeToLogicalTree((FrameworkContentElement)parent, this._type, isFE, frameworkObject.FE, frameworkObject.FCE); } } else { this.AddNodeToParent(parent, frameworkObject); } if (!flag2) { StyleHelper.InvalidatePropertiesOnTemplateNode(container, frameworkObject, this._childIndex, ref this._frameworkTemplate.ChildRecordFromChildIndex, false, this); } else { for (int i = 0; i < this.PropertyValues.Count; i++) { if (this.PropertyValues[i].ValueType != PropertyValueType.Set) { throw new NotSupportedException(SR.Get("Template3DValueOnly", new object[] { this.PropertyValues[i].Property })); } object obj = this.PropertyValues[i].ValueInternal; Freezable freezable = obj as Freezable; if (freezable != null && !freezable.CanFreeze) { obj = freezable.Clone(); } MarkupExtension markupExtension = obj as MarkupExtension; if (markupExtension != null) { ProvideValueServiceProvider provideValueServiceProvider = new ProvideValueServiceProvider(); provideValueServiceProvider.SetData(visual3D, this.PropertyValues[i].Property); obj = markupExtension.ProvideValue(provideValueServiceProvider); } visual3D.SetValue(this.PropertyValues[i].Property, obj); } } for (FrameworkElementFactory frameworkElementFactory = this._firstChild; frameworkElementFactory != null; frameworkElementFactory = frameworkElementFactory._nextSibling) { frameworkElementFactory.InstantiateTree(dataField, container, dependencyObject, affectedChildren, ref noChildIndexChildren, ref resourceDependents); } if (!flag2) { FrameworkElementFactory.NewNodeEndInit(isFE, frameworkObject.FE, frameworkObject.FCE); } } return(dependencyObject); }