private DocumentNode GetResolvedDocumentRootForSourceUri(IDocumentRootResolver documentRootResolver, DocumentCompositeNode resourceDictionaryNode, ICollection <string> warnings) { DocumentNode documentNode; DocumentCompositeNode rootNode; DocumentCompositeNode documentCompositeNode = null; IDocumentRoot documentRoot = null; Uri uriValue = resourceDictionaryNode.GetUriValue(KnownProperties.ResourceDictionarySourceProperty); Uri uri = uriValue; if (uri != null) { uri = this.documentContext.MakeDesignTimeUri(uri); } if (uri != null) { try { documentRoot = documentRootResolver.GetDocumentRoot(uri.OriginalString); if (documentRoot != null) { if (PlatformTypes.PlatformsCompatible(documentRoot.TypeResolver.PlatformMetadata, resourceDictionaryNode.TypeResolver.PlatformMetadata)) { if (documentRoot.IsEditable) { rootNode = documentRoot.RootNode as DocumentCompositeNode; } else { rootNode = null; } documentCompositeNode = rootNode; } else { if (warnings != null) { CultureInfo currentCulture = CultureInfo.CurrentCulture; string resourceDictionaryTargetFrameworkNotMatching = StringTable.ResourceDictionaryTargetFrameworkNotMatching; object[] fullName = new object[] { uriValue, documentRoot.TypeResolver.PlatformMetadata.TargetFramework.FullName, resourceDictionaryNode.TypeResolver.PlatformMetadata.TargetFramework.FullName }; warnings.Add(string.Format(currentCulture, resourceDictionaryTargetFrameworkNotMatching, fullName)); } documentNode = null; return(documentNode); } } return(documentCompositeNode); } catch (IOException oException) { return(documentCompositeNode); } catch (NotSupportedException notSupportedException) { return(documentCompositeNode); } return(documentNode); } return(documentCompositeNode); }
private DocumentCompositeNode FindResourceInRelatedDocument(IDocumentRootResolver documentRootResolver, DocumentNode keyNode, ICollection <DocumentCompositeNode> resourcesHostNodePath, ICollection <IDocumentRoot> relatedRoots, ResourceSite.ResourceDictionaryLink container, DocumentNode rootNode) { IDocumentRoot documentRoot = rootNode.DocumentRoot; for (ResourceSite.ResourceDictionaryLink i = container; i != null; i = i.Container) { if (i.DocumentRoot == documentRoot) { return(null); } } ResourceSite resourceSite = new ResourceSite(rootNode); DocumentCompositeNode documentCompositeNode = resourceSite.FindResource(documentRootResolver, keyNode, resourcesHostNodePath, relatedRoots, new ResourceSite.ResourceDictionaryLink(container, documentRoot), -1, null); if (documentCompositeNode != null && relatedRoots != null) { relatedRoots.Add(documentRoot); } return(documentCompositeNode); }
protected virtual void Dispose(bool disposing) { if (disposing) { if (this.viewNodeManager != null) { this.viewNodeManager.DisposeInternal(); this.viewNodeManager = null; } this.effectManager = null; this.instanceBuilderFactory = null; this.metadataFactory = null; this.serializationContext = null; this.documentRootResolver = null; this.viewRootResolver = null; this.parentContext = null; this.nameScope = null; this.textBufferService = null; this.containerRoot = null; if (this.instanceDictionary != null) { this.instanceDictionary.Clear(); } if (this.exceptionDictionary != null) { this.exceptionDictionary.Clear(); } if (this.warningDictionary != null) { this.warningDictionary.Clear(); } if (this.userControlInstances != null) { foreach (ViewNode userControlInstance in this.userControlInstances) { userControlInstance.Dispose(); } this.userControlInstances.Clear(); } } }
protected InstanceBuilderContextBase(IPlatform platform, IDocumentContext documentContext, IDocumentRootResolver documentRootResolver, IViewRootResolver viewRootResolver, ITypeMetadataFactory metadataFactory, INameScope nameScope, IInstanceBuilderContext parentContext, bool useShadowProperties, ITextBufferService textBufferService, DocumentNode alternateSiteNode) { this.documentContext = documentContext; this.platform = platform; this.effectManager = platform.EffectManager; this.instanceBuilderFactory = platform.InstanceBuilderFactory; this.documentRootResolver = documentRootResolver; this.viewRootResolver = viewRootResolver; this.metadataFactory = metadataFactory; this.AllowPostponingResourceEvaluation = true; this.viewNodeManager = this.platform.Create(); this.viewNodeManager.Initialize(this); this.userControlInstances = new HashSet <ViewNode>(); this.currentlyInstantiatingUserControlPreviews = new HashSet <string>(); this.instanceDictionary = this.platform.CreateInstanceDictionary(this.viewNodeManager); this.exceptionDictionary = new Microsoft.Expression.DesignModel.InstanceBuilders.ExceptionDictionary(this.viewNodeManager); this.warningDictionary = new Microsoft.Expression.DesignModel.InstanceBuilders.WarningDictionary(this.viewNodeManager); this.nameScope = nameScope; this.useShadowProperties = useShadowProperties; this.shouldRegisterInstantiatedElements = true; this.parentContext = parentContext; this.textBufferService = textBufferService; this.alternateSiteNode = alternateSiteNode; }
public DocumentCompositeNode FindResource(IDocumentRootResolver documentRootResolver, DocumentNode keyNode, ICollection <DocumentCompositeNode> resourcesHostNodePath, ICollection <IDocumentRoot> relatedRoots, int numberOfChildrenToSearch, ICollection <string> warnings) { IDocumentRoot documentRoot = this.resourcesHost.HostNode.DocumentRoot; return(this.FindResource(documentRootResolver, keyNode, resourcesHostNodePath, relatedRoots, new ResourceSite.ResourceDictionaryLink(null, documentRoot), numberOfChildrenToSearch, warnings)); }
public DocumentCompositeNode FindResource(IDocumentRootResolver documentRootResolver, string key, ICollection <DocumentCompositeNode> resourcesHostNodePath, ICollection <IDocumentRoot> relatedRoots, ICollection <string> warnings) { return(this.FindResource(documentRootResolver, this.documentContext.CreateNode(key), resourcesHostNodePath, relatedRoots, -1, warnings)); }
private DocumentCompositeNode FindResource(IDocumentRootResolver documentRootResolver, DocumentNode keyNode, ICollection <DocumentCompositeNode> resourcesHostNodePath, ICollection <IDocumentRoot> relatedRoots, ResourceSite.ResourceDictionaryLink container, int numberOfChildrenToSearch, ICollection <string> warnings) { if (resourcesHostNodePath != null) { resourcesHostNodePath.Add(this.resourcesHost.HostNode); } DocumentCompositeNode resources = this.resourcesHost.Resources; if (resources == null) { return(null); } DocumentCompositeNode documentCompositeNode = ResourceSite.FindResource(keyNode, resources, numberOfChildrenToSearch); if (documentCompositeNode != null) { return(documentCompositeNode); } if (documentRootResolver == null) { return(null); } if (resources.TypeResolver.ResolveProperty(KnownProperties.ResourceDictionaryMergedDictionariesProperty) != null) { DocumentCompositeNode item = resources.Properties[KnownProperties.ResourceDictionaryMergedDictionariesProperty] as DocumentCompositeNode; if (item != null) { for (int i = item.Children.Count - 1; i >= 0; i--) { DocumentCompositeNode item1 = item.Children[i] as DocumentCompositeNode; if (item1 != null) { DocumentNode resolvedDocumentRootForSourceUri = this.GetResolvedDocumentRootForSourceUri(documentRootResolver, item1, warnings); if (resolvedDocumentRootForSourceUri == null || !PlatformTypes.ResourceDictionary.IsAssignableFrom(resolvedDocumentRootForSourceUri.Type)) { documentCompositeNode = ResourceSite.FindResource(keyNode, item1, -1); if (documentCompositeNode != null) { return(documentCompositeNode); } } else { documentCompositeNode = this.FindResourceInRelatedDocument(documentRootResolver, keyNode, resourcesHostNodePath, relatedRoots, container, resolvedDocumentRootForSourceUri); if (documentCompositeNode != null) { return(documentCompositeNode); } } } } } } if (resources.TypeResolver.ResolveProperty(KnownProperties.ResourceDictionarySourceProperty) != null) { DocumentNode documentNode = this.GetResolvedDocumentRootForSourceUri(documentRootResolver, resources, warnings); if (documentNode != null && PlatformTypes.ResourceDictionary.IsAssignableFrom(documentNode.Type)) { return(this.FindResourceInRelatedDocument(documentRootResolver, keyNode, resourcesHostNodePath, relatedRoots, container, documentNode)); } } return(null); }
public void UpdateDocumentRootResolver(IDocumentRootResolver resolver) { this.DocumentRootResolver = resolver; }
public InstanceBuilderContext(IPlatform platform, IDocumentRootResolver documentRootResolver, ITypeMetadataFactory metadataFactory, SceneViewModel viewModel, INameScope nameScope, InstanceBuilderContext parentContext, bool useShadowProperties, ITextBufferService textBufferService, DocumentNode alternateSiteNode) : base(platform, viewModel.DocumentRoot.DocumentContext, documentRootResolver, (IViewRootResolver)viewModel.DesignerContext.ViewRootResolver, metadataFactory, nameScope, (IInstanceBuilderContext)parentContext, useShadowProperties, textBufferService, alternateSiteNode) { this.viewModel = viewModel; }
protected void JustDecompileGenerated_set_DocumentRootResolver(IDocumentRootResolver value) { this.documentRootResolver = value; }
public ExpressionEvaluator(IDocumentRootResolver documentRootResolver) { this.documentRootResolver = documentRootResolver; }