public DocumentNode CreateResourceReference(IDocumentContext documentContext, DocumentCompositeNode resourceNode, bool useStaticResource) { DocumentNode resourceEntryKey = ResourceNodeHelper.GetResourceEntryKey(resourceNode); if (resourceEntryKey == null) { return((DocumentNode)null); } DocumentNode keyNode = resourceEntryKey.Clone(documentContext); if (useStaticResource) { return((DocumentNode)DocumentNodeUtilities.NewStaticResourceNode(documentContext, keyNode)); } return((DocumentNode)DocumentNodeUtilities.NewDynamicResourceNode(documentContext, keyNode)); }
public override void SetValueToSystemResource(SceneNodeProperty propertyKey, SystemResourceModel systemResource) { PerformanceUtility.StartPerformanceSequence(PerformanceEvent.ApplyResource, "Apply system resource."); SceneViewModel viewModel = this.ViewModel; if (viewModel != null) { IDocumentContext documentContext = viewModel.Document.DocumentContext; IType type = viewModel.ProjectContext.ProjectNamespaces.GetType((IXmlNamespace)XmlNamespace.AvalonXmlNamespace, systemResource.CollectionName); if (type != null) { IMember memberId = (IMember)type.GetMember(MemberType.LocalProperty | MemberType.Field, systemResource.ResourceName, MemberAccessTypes.Public); DocumentNode documentNode = (DocumentNode)null; if (memberId != null) { documentNode = (DocumentNode)DocumentNodeUtilities.NewDynamicResourceNode(documentContext, (DocumentNode)DocumentNodeUtilities.NewStaticNode(documentContext, memberId)); } using (this.ShouldAllowAnimation ? (IDisposable)null : viewModel.AnimationEditor.DeferKeyFraming()) this.SetValue((PropertyReferenceProperty)propertyKey, (object)documentNode); } } PerformanceUtility.EndPerformanceSequence(PerformanceEvent.ApplyResource, "Apply resource."); }
protected void SetToResourceInternal(PropertyReference propertyReference, LocalResourceModel resourceModel) { using (SceneEditTransaction editTransaction = this.ViewModel.CreateEditTransaction(string.Format((IFormatProvider)CultureInfo.CurrentCulture, StringTable.PropertySetUndo, new object[1] { (object)this.TargetProperty.Name }))) { IDocumentContext documentContext = this.ViewModel.Document.DocumentContext; DocumentNode keyNode = resourceModel.ResourceKey.Clone(documentContext); DocumentNode resourceExtensionNode = !(propertyReference[0] is DependencyPropertyReferenceStep) || !JoltHelper.TypeSupported((ITypeResolver)this.ViewModel.ProjectContext, PlatformTypes.DynamicResource) ? (DocumentNode)DocumentNodeUtilities.NewStaticResourceNode(documentContext, keyNode) : (DocumentNode)DocumentNodeUtilities.NewDynamicResourceNode(documentContext, keyNode); this.TargetElement.SetValue(propertyReference, (object)resourceExtensionNode); Microsoft.Expression.DesignSurface.Utility.ResourceHelper.EnsureReferencedResourcesAreReachable(resourceModel.ResourceNode, resourceExtensionNode); editTransaction.Commit(); } }
public override void SetValueToLocalResource(SceneNodeProperty propertyKey, LocalResourceModel localResource) { DocumentNode resourceKey = localResource.ResourceKey; PerformanceUtility.StartPerformanceSequence(PerformanceEvent.ApplyResource, "Apply resource."); SceneViewModel viewModel = this.ViewModel; if (viewModel != null) { IDocumentContext documentContext = viewModel.Document.DocumentContext; IProjectContext projectContext = viewModel.ProjectContext; DocumentNode keyNode = resourceKey.Clone(documentContext); bool flag = this.CanSetDynamicExpression && JoltHelper.TypeSupported((ITypeResolver)projectContext, PlatformTypes.DynamicResource); if (flag && this.ShouldAllowAnimation && (propertyKey.IsEnabledRecordCurrentValue && this.ViewModel.AnimationEditor.IsRecording)) { flag = false; } DocumentNode documentNode = !flag ? (DocumentNode)DocumentNodeUtilities.NewStaticResourceNode(documentContext, keyNode) : (DocumentNode)DocumentNodeUtilities.NewDynamicResourceNode(documentContext, keyNode); using (this.ShouldAllowAnimation ? (IDisposable)null : viewModel.AnimationEditor.DeferKeyFraming()) { string description = string.Format((IFormatProvider)CultureInfo.CurrentCulture, StringTable.PropertyChangeUndoDescription, new object[1] { (object)((PropertyEntry)propertyKey).get_PropertyName() }); if (viewModel.Document.IsEditable) { using (SceneEditTransaction editTransaction = viewModel.CreateEditTransaction(description)) { this.SetValue((PropertyReferenceProperty)propertyKey, (object)documentNode); bool isMixed; DocumentNode valueAsDocumentNode = this.GetLocalValueAsDocumentNode(propertyKey, GetLocalValueFlags.CheckKeyframes, out isMixed); if (!isMixed && valueAsDocumentNode != null) { Microsoft.Expression.DesignSurface.Utility.ResourceHelper.EnsureReferencedResourcesAreReachable(localResource.ResourceNode, valueAsDocumentNode); } editTransaction.Commit(); } } } } PerformanceUtility.EndPerformanceSequence(PerformanceEvent.ApplyResource, "Apply resource."); }
public bool ApplyStyle(SceneNode node) { BaseFrameworkElement frameworkElement = node as BaseFrameworkElement; if (frameworkElement == null || !this.StyleType.IsAssignableFrom((ITypeId)frameworkElement.Type)) { return(false); } ResourceDictionaryAssetProvider dictionaryAssetProvider = this.Provider as ResourceDictionaryAssetProvider; if (dictionaryAssetProvider != null && dictionaryAssetProvider.ContentProvider != null && !dictionaryAssetProvider.ContentProvider.EnsureLinked(frameworkElement.ViewModel) || frameworkElement.DocumentNodePath.Contains(this.ResourceModel.ValueNode)) { return(false); } IDocumentContext context = frameworkElement.DocumentNode.Context; DocumentNode valueNode = !JoltHelper.TypeSupported((ITypeResolver)frameworkElement.ProjectContext, PlatformTypes.DynamicResource) ? (DocumentNode)DocumentNodeUtilities.NewStaticResourceNode(context, this.ResourceModel.KeyNode.Clone(context)) : (DocumentNode)DocumentNodeUtilities.NewDynamicResourceNode(context, this.ResourceModel.KeyNode.Clone(context)); frameworkElement.SetLocalValue(BaseFrameworkElement.StyleProperty, valueNode); return(true); }
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); }