Пример #1
0
        public static DocumentCompositeNode NewTemplateBindingNode(DocumentNode targetNode, IPropertyId sourceProperty, PropertyReference targetProperty)
        {
            DocumentCompositeNode documentCompositeNode = null;
            IDocumentContext      context = targetNode.Context;

            if (!DocumentNodeUtilities.ShouldUseRelativeSourceTemplateBinding(targetNode, targetProperty))
            {
                IProperty    property     = targetNode.TypeResolver.ResolveProperty(sourceProperty);
                DocumentNode documentNode = targetNode.Context.CreateNode(PlatformTypes.DependencyProperty, new DocumentNodeMemberValue(property));
                documentCompositeNode = targetNode.Context.CreateNode(PlatformTypes.TemplateBinding);
                documentCompositeNode.Properties[KnownProperties.TemplateBindingPropertyProperty] = documentNode;
            }
            else
            {
                DocumentCompositeNode documentCompositeNode1 = targetNode.Context.CreateNode(PlatformTypes.RelativeSource);
                DocumentPrimitiveNode documentPrimitiveNode  = targetNode.Context.CreateNode(PlatformTypes.RelativeSourceMode, new DocumentNodeStringValue("TemplatedParent"));
                documentCompositeNode1.Properties[KnownProperties.RelativeSourceModeProperty] = documentPrimitiveNode;
                IPlatformTypes platformMetadata = (IPlatformTypes)targetNode.PlatformMetadata;
                object         obj           = platformMetadata.MakePropertyPath(sourceProperty.Name, new object[0]);
                DocumentNode   documentNode1 = targetNode.Context.CreateNode(obj.GetType(), obj);
                documentCompositeNode = targetNode.Context.CreateNode(PlatformTypes.Binding);
                documentCompositeNode.Properties[KnownProperties.BindingRelativeSourceProperty] = documentCompositeNode1;
                documentCompositeNode.Properties[KnownProperties.BindingPathProperty]           = documentNode1;
            }
            return(documentCompositeNode);
        }
Пример #2
0
        public static DocumentCompositeNode NewBindingNode(IDocumentContext documentContext, DocumentNode pathNode)
        {
            DocumentCompositeNode documentCompositeNode = DocumentNodeUtilities.NewBindingNode(documentContext);

            documentCompositeNode.Properties[KnownProperties.BindingPathProperty] = pathNode;
            return(documentCompositeNode);
        }
Пример #3
0
        public DocumentNode EvaluateExpression(DocumentNodePath context, DocumentNode expression)
        {
            DocumentCompositeNode documentCompositeNode  = expression as DocumentCompositeNode;
            DocumentCompositeNode documentCompositeNode1 = documentCompositeNode;

            if (documentCompositeNode == null)
            {
                DocumentPrimitiveNode documentPrimitiveNode  = expression as DocumentPrimitiveNode;
                DocumentPrimitiveNode documentPrimitiveNode1 = documentPrimitiveNode;
                if (documentPrimitiveNode != null)
                {
                    DocumentNodeReferenceValue value = documentPrimitiveNode1.Value as DocumentNodeReferenceValue;
                    if (value != null)
                    {
                        return(value.Value);
                    }
                }
            }
            else
            {
                if (DocumentNodeUtilities.IsTemplateBinding(documentCompositeNode1))
                {
                    return(this.EvaluateTemplateBinding(context, documentCompositeNode1));
                }
                if (documentCompositeNode1.Type.IsResource)
                {
                    DocumentNode resourceKey = ResourceNodeHelper.GetResourceKey(documentCompositeNode1);
                    if (resourceKey != null)
                    {
                        return(this.EvaluateResource(context, ResourceNodeHelper.GetResourceType(documentCompositeNode1), resourceKey));
                    }
                }
            }
            return(expression);
        }
Пример #4
0
 public static bool IsResource(DocumentNode node)
 {
     if (DocumentNodeUtilities.IsStaticResource(node))
     {
         return(true);
     }
     return(DocumentNodeUtilities.IsDynamicResource(node));
 }
Пример #5
0
 public static ResourceReferenceType GetResourceType(DocumentNode node)
 {
     if (DocumentNodeUtilities.IsDynamicResource(node))
     {
         return(ResourceReferenceType.Dynamic);
     }
     return(ResourceReferenceType.Static);
 }
Пример #6
0
        public static DocumentNode GetStyleSetterValueAsDocumentNode(DocumentCompositeNode styleNode, IPropertyId property)
        {
            DocumentCompositeNode styleSetter = DocumentNodeUtilities.GetStyleSetter(styleNode, property);

            if (styleSetter == null)
            {
                return(null);
            }
            return(styleSetter.Properties[KnownProperties.SetterValueProperty]);
        }
Пример #7
0
 public static IPropertyId GetResourceProperty(DocumentNode node)
 {
     if (DocumentNodeUtilities.IsDynamicResource(node))
     {
         return(KnownProperties.DynamicResourceResourceKeyProperty);
     }
     if (DocumentNodeUtilities.IsStaticResource(node))
     {
         return(KnownProperties.StaticResourceResourceKeyProperty);
     }
     return(null);
 }
Пример #8
0
 public static DocumentCompositeNode NewTemplateBindingNode(DocumentNode targetNode, IPropertyId sourceProperty)
 {
     return(DocumentNodeUtilities.NewTemplateBindingNode(targetNode, sourceProperty, null));
 }