protected virtual bool IsResourceCompatible(LocalResourceModel resourceModel)
 {
     if (!PlatformTypeHelper.GetPropertyType(this.TargetProperty).IsAssignableFrom(resourceModel.ResourceType))
     {
         return(false);
     }
     return(this.DoesStyleOrTemplateApply((IPropertyId)this.TargetProperty, resourceModel.ResourceNode));
 }
        protected virtual bool IsResourceInUse(LocalResourceModel resourceModel)
        {
            DocumentNodePath valueAsDocumentNode = this.TargetElement.GetLocalValueAsDocumentNode(this.TargetPropertyReference);

            if (valueAsDocumentNode != null)
            {
                return(valueAsDocumentNode.Node == resourceModel.ResourceNode);
            }
            return(false);
        }
        protected override bool IsResourceInUse(LocalResourceModel resourceModel)
        {
            DocumentNodePath valueAsDocumentNode = this.TargetElement.GetLocalValueAsDocumentNode(new PropertyReference(this.GetTargetProperty((ITypeId)resourceModel.ResourceNode.Type)));

            if (valueAsDocumentNode != null)
            {
                return(valueAsDocumentNode.Node == resourceModel.ResourceNode);
            }
            return(false);
        }
        protected override bool IsResourceCompatible(LocalResourceModel resourceModel)
        {
            DocumentNode  resourceNode   = resourceModel.ResourceNode;
            ReferenceStep targetProperty = this.GetTargetProperty((ITypeId)resourceNode.Type);

            if (!(this.TargetElement is StyleNode) || !BaseFrameworkElement.StyleProperty.Equals((object)targetProperty))
            {
                return(this.DoesStyleOrTemplateApply((IPropertyId)targetProperty, resourceNode));
            }
            return(false);
        }
 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();
     }
 }
Beispiel #6
0
        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 SetToResourceCommand(ResourceListCommand parentCommand, LocalResourceModel resourceModel)
 {
     this.parentCommand = parentCommand;
     this.resourceModel = resourceModel;
 }
 protected virtual void SetToResource(LocalResourceModel resourceModel)
 {
     this.SetToResourceInternal(this.TargetPropertyReference, resourceModel);
 }
 protected override void SetToResource(LocalResourceModel resourceModel)
 {
     this.SetToResourceInternal(new PropertyReference(this.GetTargetProperty((ITypeId)resourceModel.ResourceNode.Type)), resourceModel);
 }
 public abstract void SetValueToLocalResource(SceneNodeProperty propertyKey, LocalResourceModel localResource);