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); }
public static DocumentCompositeNode NewBindingNode(IDocumentContext documentContext, DocumentNode pathNode) { DocumentCompositeNode documentCompositeNode = DocumentNodeUtilities.NewBindingNode(documentContext); documentCompositeNode.Properties[KnownProperties.BindingPathProperty] = pathNode; return(documentCompositeNode); }
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); }
public static bool IsResource(DocumentNode node) { if (DocumentNodeUtilities.IsStaticResource(node)) { return(true); } return(DocumentNodeUtilities.IsDynamicResource(node)); }
public static ResourceReferenceType GetResourceType(DocumentNode node) { if (DocumentNodeUtilities.IsDynamicResource(node)) { return(ResourceReferenceType.Dynamic); } return(ResourceReferenceType.Static); }
public static DocumentNode GetStyleSetterValueAsDocumentNode(DocumentCompositeNode styleNode, IPropertyId property) { DocumentCompositeNode styleSetter = DocumentNodeUtilities.GetStyleSetter(styleNode, property); if (styleSetter == null) { return(null); } return(styleSetter.Properties[KnownProperties.SetterValueProperty]); }
public static IPropertyId GetResourceProperty(DocumentNode node) { if (DocumentNodeUtilities.IsDynamicResource(node)) { return(KnownProperties.DynamicResourceResourceKeyProperty); } if (DocumentNodeUtilities.IsStaticResource(node)) { return(KnownProperties.StaticResourceResourceKeyProperty); } return(null); }
public static DocumentCompositeNode NewTemplateBindingNode(DocumentNode targetNode, IPropertyId sourceProperty) { return(DocumentNodeUtilities.NewTemplateBindingNode(targetNode, sourceProperty, null)); }