private void ApplyResourceOnExistingElement(SceneElement targetElement, IPropertyId targetProperty, ResourceEntryItem resource) { if (resource.Resource.KeyNode != null || targetProperty.Equals((object)BaseFrameworkElement.StyleProperty)) { using (SceneEditTransaction editTransaction = this.ActiveDocument.CreateEditTransaction(string.Format((IFormatProvider)CultureInfo.CurrentCulture, StringTable.PropertySetUndo, new object[1] { (object)targetProperty.Name }))) { if (resource.Resource.KeyNode != null) { IDocumentContext documentContext = this.ActiveSceneViewModel.Document.DocumentContext; IProjectContext projectContext = this.ActiveSceneViewModel.Document.ProjectContext; DocumentNode keyNode = resource.Resource.KeyNode.Clone(documentContext); DocumentNode documentNode = !(projectContext.ResolveProperty(targetProperty) is DependencyPropertyReferenceStep) || !JoltHelper.TypeSupported((ITypeResolver)projectContext, PlatformTypes.DynamicResource) ? (DocumentNode)DocumentNodeUtilities.NewStaticResourceNode(documentContext, keyNode) : (DocumentNode)DocumentNodeUtilities.NewDynamicResourceNode(documentContext, keyNode); targetElement.SetValue(targetProperty, (object)documentNode); } else if (targetProperty.Equals((object)BaseFrameworkElement.StyleProperty)) { targetElement.ClearValue(targetProperty); } editTransaction.Commit(); } } ResourceManager resourceManager = this.ActiveSceneViewModel.DesignerContext.ResourceManager; DocumentReference documentReference = resource.Container.DocumentReference; if (resource.Resource.IsResourceReachable((SceneNode)targetElement) || !(documentReference != resourceManager.ActiveRootContainer.DocumentReference) || !(documentReference != resourceManager.TopLevelResourceContainer.DocumentReference)) { return; } resourceManager.LinkToResource(resourceManager.TopLevelResourceContainer, documentReference); }
public static bool DoesStyleTargetControl(IProjectContext projectContext, IType elementType, IPropertyId styleProperty) { IProperty property = projectContext.ResolveProperty(styleProperty); Type propertyTargetType = elementType.Metadata.GetStylePropertyTargetType((IPropertyId)property); Type runtimeType = projectContext.ResolveType(PlatformTypes.Control).RuntimeType; if (propertyTargetType != (Type)null) { return(runtimeType.IsAssignableFrom(propertyTargetType)); } return(false); }
public void ResolveProperties(IProjectContext projectContext, IPropertyManager propertyManager, Microsoft.Expression.DesignSurface.Documents.PropertyReferenceChangedEventHandler referenceChangedCallback) { this.Clear(false); this.resolvedProperties = new HashSet <ReferenceStep>(); this.propertyManager = propertyManager; this.referenceChangedCallback = referenceChangedCallback; foreach (IPropertyId propertyId in this.NeutralProperties) { ReferenceStep singleStep = projectContext.ResolveProperty(propertyId) as ReferenceStep; if (singleStep != null) { this.resolvedProperties.Add(singleStep); propertyManager.RegisterPropertyReferenceChangedHandler(new PropertyReference(singleStep), referenceChangedCallback, true); } } }
private SceneNode InsertTrigger(BehaviorTriggerBaseNode triggerNode) { BehaviorTriggerActionNode triggerActionNode1 = (BehaviorTriggerActionNode)triggerNode.Actions[0]; DocumentCompositeNode documentCompositeNode = (DocumentCompositeNode)triggerNode.DocumentNode; IProjectContext projectContext = triggerNode.ProjectContext; SceneNode sceneNode = this.InsertionPoint.SceneNode; ISceneNodeCollection <SceneNode> collectionForProperty = sceneNode.GetCollectionForProperty(BehaviorHelper.BehaviorTriggersProperty); BehaviorTriggerBaseNode behaviorTriggerBaseNode = BehaviorHelper.FindMatchingTriggerNode((DocumentNode)documentCompositeNode, collectionForProperty); if (behaviorTriggerBaseNode != null) { BehaviorTriggerActionNode triggerActionNode2 = (BehaviorTriggerActionNode)this.ViewModel.GetSceneNode(triggerActionNode1.DocumentNode.Clone(this.ViewModel.Document.DocumentContext)); behaviorTriggerBaseNode.Actions.Add((SceneNode)triggerActionNode2); triggerActionNode1 = triggerActionNode2; } else { behaviorTriggerBaseNode = triggerNode; collectionForProperty.Add((SceneNode)behaviorTriggerBaseNode); } if (projectContext.IsCapabilitySet(PlatformCapability.SupportsAttachingToRootElements) && sceneNode.ViewModel.ActiveEditingContainer.Equals((object)sceneNode)) { IProperty property = projectContext.ResolveProperty(BehaviorTargetedTriggerActionNode.BehaviorTargetObjectProperty); if (property != null) { foreach (BehaviorTriggerActionNode triggerActionNode2 in (IEnumerable <SceneNode>)behaviorTriggerBaseNode.Actions) { if (ProjectNeutralTypes.BehaviorTargetedTriggerAction.IsAssignableFrom((ITypeId)triggerActionNode2.Type)) { BehaviorHelper.CreateAndSetElementNameBinding((IPropertyId)property, (SceneNode)triggerActionNode2, sceneNode); } } } } BehaviorEventTriggerNode eventTriggerNode = behaviorTriggerBaseNode as BehaviorEventTriggerNode; if (eventTriggerNode != null) { BehaviorEventTriggerNode.FixUpEventName(eventTriggerNode); } return((SceneNode)triggerActionNode1); }
public override void Instantiate() { base.Instantiate(); this.CopyProperty(RichTextBoxElement.VerticalScrollBarVisibilityProperty); this.CopyProperty(RichTextBoxElement.HorizontalScrollBarVisibilityProperty); this.CopyProperty(RichTextBoxRangeElement.TextBlockTextAlignmentPropertyId); if (this.TextSource.ProjectContext.ResolveProperty(RichTextBoxElement.CaretBrushProperty) != null) { this.CopyProperty(RichTextBoxElement.CaretBrushProperty); } ITextFlowSceneNode textFlowSceneNode = (ITextFlowSceneNode)this.TextSource; DocumentNodePath documentNodePath = this.TextSource.DocumentNodePath; SceneViewModel viewModel = this.TextSource.ViewModel; IDocumentContext documentContext = viewModel.Document.DocumentContext; IProjectContext projectContext = viewModel.Document.ProjectContext; using (InstanceBuilderContext instanceBuilderContext = new InstanceBuilderContext(projectContext, viewModel, true, (Microsoft.Expression.DesignModel.DocumentModel.DocumentNode)null)) { using (instanceBuilderContext.DisablePostponedResourceEvaluation()) { instanceBuilderContext.ViewNodeManager.RootNodePath = documentNodePath; instanceBuilderContext.ViewNodeManager.Instantiate(instanceBuilderContext.ViewNodeManager.Root); } this.UpdateUIChildrenInstances((IInstanceBuilderContext)instanceBuilderContext); ReferenceStep referenceStep = (ReferenceStep)projectContext.ResolveProperty(textFlowSceneNode.TextChildProperty); bool flag1 = false; bool flag2 = false; bool flag3 = false; FlowDocument flowDocument = (FlowDocument)referenceStep.GetCurrentValue(instanceBuilderContext.ViewNodeManager.Root.Instance); DependencyPropertyReferenceStep shadowProperty = DesignTimeProperties.GetShadowProperty(projectContext.ResolveProperty(TextElementSceneElement.FontFamilyProperty), (ITypeId)null); if (flowDocument == null) { flowDocument = new FlowDocument(); } else { flag1 = ((ReferenceStep)projectContext.ResolveProperty(TextElementSceneElement.FontSizeProperty)).IsSet((object)flowDocument); flag2 = ((ReferenceStep)projectContext.ResolveProperty(ParagraphElement.TextAlignmentProperty)).IsSet((object)flowDocument); flag3 = shadowProperty.IsSet((object)flowDocument); } double fontSize = flowDocument.FontSize; FontFamily fontFamily = (FontFamily)shadowProperty.GetValue((object)flowDocument); Thickness pagePadding = flowDocument.PagePadding; TextAlignment textAlignment = flowDocument.TextAlignment; referenceStep.SetValue(instanceBuilderContext.ViewNodeManager.Root.Instance, (object)new FlowDocument()); this.RichTextBox.Document = (IViewFlowDocument)this.TextSource.Platform.ViewObjectFactory.Instantiate((object)flowDocument); if (flag1) { flowDocument.FontSize = fontSize; } if (flag3) { if (!DesignTimeProperties.UseShadowPropertyForInstanceBuilding(this.TypeResolver, ControlElement.FontFamilyProperty)) { flowDocument.FontFamily = fontFamily; } else { shadowProperty.SetValue((object)flowDocument, (object)fontFamily); } } if (flag2) { flowDocument.TextAlignment = textAlignment; } flowDocument.PagePadding = pagePadding; } }