public override SceneNode GenerateConverter() { IDocumentContext documentContext = this.valueConverter.DocumentContext; DocumentNode keyNode = (DocumentNode)documentContext.CreateNode(this.DisplayName); return(this.valueConverter.ViewModel.GetSceneNode((DocumentNode)DocumentNodeUtilities.NewStaticResourceNode(documentContext, keyNode))); }
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)); }
private BindingSceneNode CreateFallbackBind(SceneViewModel viewModel, string bindingPath, SceneNode targetNode, IProperty targetProperty) { BindingSceneNode binding = BindingSceneNode.Factory.Instantiate(viewModel); if (this.ResourceKey != null) { DocumentNode keyNode = this.ResourceKey.Clone(viewModel.Document.DocumentContext); binding.Source = (DocumentNode)DocumentNodeUtilities.NewStaticResourceNode(viewModel.Document.DocumentContext, keyNode); } if (bindingPath.Length > 0) { binding.XPath = bindingPath; } using (targetNode.ViewModel.AnimationEditor.DeferKeyFraming()) targetNode.SetBinding((IPropertyId)targetProperty, binding); return(binding); }
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."); }
private SceneNode CreateDataSource(SceneNode target, DataSchemaNodePath bindingPath, bool isSourcePathLess) { DocumentNode resourceKey = bindingPath.Schema.DataSource.ResourceKey; if (resourceKey == null) { if (!isSourcePathLess && !string.IsNullOrEmpty(bindingPath.Path)) { return((SceneNode)null); } DocumentNode documentNode = bindingPath.Schema.DataSource.DocumentNode; IProjectItem designDataFile = DesignDataHelper.GetDesignDataFile(documentNode); DocumentNode node; if (designDataFile != null) { node = DesignDataHelper.CreateDesignDataExtension(designDataFile, target.DocumentContext); } else { if (PlatformTypes.FrameworkElement.IsAssignableFrom((ITypeId)bindingPath.Schema.DataSource.DocumentNode.Type)) { return((SceneNode)null); } node = documentNode.Clone(target.DocumentContext); } return(target.ViewModel.GetSceneNode(node)); } if (!this.EnsureDataSourceReachable(target, bindingPath.Schema.DataSource)) { return((SceneNode)null); } BindingSceneNode bindingSceneNode = BindingSceneNode.Factory.Instantiate(target.ViewModel); DocumentNode keyNode = resourceKey.Clone(target.DocumentContext); bindingSceneNode.Source = (DocumentNode)DocumentNodeUtilities.NewStaticResourceNode(keyNode.Context, keyNode); return((SceneNode)bindingSceneNode); }
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 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); }