コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 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();
         }
     }
 }
コード例 #4
0
 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;
 }
コード例 #5
0
        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));
        }
コード例 #6
0
 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));
 }
コード例 #7
0
        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);
        }
コード例 #8
0
 public void UpdateDocumentRootResolver(IDocumentRootResolver resolver)
 {
     this.DocumentRootResolver = resolver;
 }
コード例 #9
0
 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;
 }
コード例 #10
0
 protected void JustDecompileGenerated_set_DocumentRootResolver(IDocumentRootResolver value)
 {
     this.documentRootResolver = value;
 }
コード例 #11
0
 public ExpressionEvaluator(IDocumentRootResolver documentRootResolver)
 {
     this.documentRootResolver = documentRootResolver;
 }