protected DocumentNode GetReferentialPropertyValueAsDocumentNode(DocumentCompositeNode compositeNode) { DocumentNode documentNode = compositeNode.Properties[this.ReferentialProperty]; if (documentNode != null && DocumentNodeUtilities.IsResource(documentNode)) { documentNode = ExpressionEvaluator.EvaluateExpression(documentNode); } return(documentNode); }
public static DocumentNode FindTargetElement(DocumentNode node, bool resolveTargetName) { DocumentCompositeNode documentCompositeNode1 = node as DocumentCompositeNode; if (documentCompositeNode1 != null) { DocumentNode documentNode1 = documentCompositeNode1.Properties[BehaviorTargetedTriggerActionNode.BehaviorTargetNameProperty]; string elementName = !resolveTargetName || documentNode1 == null || !DocumentNodeUtilities.IsResource(documentNode1) ? documentCompositeNode1.GetValueAsString(BehaviorTargetedTriggerActionNode.BehaviorTargetNameProperty) : DocumentPrimitiveNode.GetValueAsString(ExpressionEvaluator.EvaluateExpression(documentNode1)); IProperty property1 = node.PlatformMetadata.ResolveProperty(BehaviorTargetedTriggerActionNode.BehaviorTargetObjectProperty); if (property1 != null) { DocumentNode documentNode2 = documentCompositeNode1.Properties[(IPropertyId)property1]; if (documentNode2 != null) { if (DocumentNodeUtilities.IsMarkupExtension(documentNode2)) { if (!DocumentNodeUtilities.IsBinding(documentNode2) || !GoToStateActionNode.CanResolveTargetFromBinding(documentNode2)) { return(ExpressionEvaluator.EvaluateExpression(documentNode2)); } documentNode2 = GoToStateActionNode.ResolveTargetFromBinding(node, (DocumentCompositeNode)documentNode2); } return(documentNode2); } } if (!string.IsNullOrEmpty(elementName)) { return(BehaviorHelper.FindNamedElement(node, elementName)); } DocumentNode documentNode3; for (documentNode3 = (DocumentNode)documentCompositeNode1; documentNode3 != null; documentNode3 = (DocumentNode)documentNode3.Parent) { DocumentCompositeNode documentCompositeNode2 = documentNode3 as DocumentCompositeNode; IProperty property2 = node.TypeResolver.ResolveProperty(VisualStateManagerSceneNode.VisualStateGroupsProperty); if (property2 == null) { return((DocumentNode)null); } if (documentCompositeNode2 != null && documentCompositeNode2.Properties[(IPropertyId)property2] != null) { break; } } if (documentNode3 != null) { DocumentCompositeNode parent = documentNode3.Parent; if (parent != null && PlatformTypes.ICollection.IsAssignableFrom((ITypeId)parent.Type) && parent.Parent != null) { return((DocumentNode)parent.Parent); } return((DocumentNode)documentNode3.Parent); } } return((DocumentNode)null); }