public static void MoveStates(SceneElement source, SceneElement target) { if (source == null || target == null || source.ProjectContext.PlatformMetadata.IsNullType((ITypeId)source.ProjectContext.ResolveType(ProjectNeutralTypes.VisualStateManager))) { return; } IList <VisualStateGroupSceneNode> stateGroups = VisualStateManagerSceneNode.GetStateGroups((SceneNode)target); stateGroups.Clear(); ISceneNodeCollection <SceneNode> collectionForProperty = source.GetCollectionForProperty(VisualStateManagerSceneNode.VisualStateGroupsProperty); List <VisualStateGroupSceneNode> list = new List <VisualStateGroupSceneNode>(); foreach (SceneNode sceneNode in (IEnumerable <SceneNode>)collectionForProperty) { if (sceneNode is VisualStateGroupSceneNode) { list.Add((VisualStateGroupSceneNode)VisualStateGroupSceneNode.Factory.Instantiate(target.ViewModel, sceneNode.DocumentNode.Clone(target.DocumentContext))); } } collectionForProperty.Clear(); foreach (VisualStateGroupSceneNode stateGroupSceneNode in list) { stateGroups.Add(stateGroupSceneNode); } }
public static void DeleteStateGroup(SceneNode ownerNode, VisualStateGroupSceneNode nodeToRemove) { IList <VisualStateGroupSceneNode> stateGroups = VisualStateManagerSceneNode.GetStateGroups(ownerNode); stateGroups.Remove(nodeToRemove); if (stateGroups.Count != 0) { return; } ownerNode.ClearLocalValue(VisualStateManagerSceneNode.VisualStateGroupsProperty); }
public static void AddDefaultStates(SceneNode ownerNode, SceneNode rootNode, ITypeId controlTypeId) { IType controlType = ownerNode.ProjectContext.ResolveType(controlTypeId); IProjectContext projectContext = ownerNode.ProjectContext; if (projectContext != null && projectContext.IsCapabilitySet(PlatformCapability.VsmInToolkit) && (projectContext.IsCapabilitySet(PlatformCapability.SupportsVisualStateManager) && projectContext.PlatformMetadata.IsNullType((ITypeId)projectContext.ResolveType(ProjectNeutralTypes.VisualStateManager)))) { IAssembly usingAssemblyName = ((PlatformTypes)projectContext.Platform.Metadata).GetPlatformAssemblyUsingAssemblyName(controlType.RuntimeAssembly); if (usingAssemblyName == null || !AssemblyHelper.IsPlatformAssembly(usingAssemblyName)) { ToolkitProjectContext toolkitProjectContext = new ToolkitProjectContext(projectContext); if (ProjectAttributeHelper.GetDefaultStateRecords(controlType, (ITypeResolver)toolkitProjectContext).Count > 0) { ToolkitHelper.AddToolkitReferenceIfNeeded((ITypeResolver)projectContext, ownerNode.DesignerContext.ViewUpdateManager); } } } foreach (DefaultStateRecord defaultStateRecord in ProjectAttributeHelper.GetDefaultStateRecords(controlType, (ITypeResolver)ownerNode.ProjectContext.GetService(typeof(ProjectContext)))) { IList <VisualStateGroupSceneNode> stateGroups = VisualStateManagerSceneNode.GetStateGroups(ownerNode); VisualStateGroupSceneNode stateGroupSceneNode1 = (VisualStateGroupSceneNode)null; foreach (VisualStateGroupSceneNode stateGroupSceneNode2 in (IEnumerable <VisualStateGroupSceneNode>)stateGroups) { if (stateGroupSceneNode2.Name == defaultStateRecord.GroupName) { stateGroupSceneNode1 = stateGroupSceneNode2; } } if (stateGroupSceneNode1 == null) { VisualStateManagerSceneNode.EnsureNameAvailable(rootNode, defaultStateRecord.GroupName); stateGroupSceneNode1 = VisualStateManagerSceneNode.AddStateGroup(ownerNode, rootNode, defaultStateRecord.GroupName); stateGroupSceneNode1.ShouldSerialize = false; } VisualStateSceneNode visualStateSceneNode1 = (VisualStateSceneNode)null; if (stateGroupSceneNode1 != null) { foreach (VisualStateSceneNode visualStateSceneNode2 in (IEnumerable <VisualStateSceneNode>)stateGroupSceneNode1.States) { if (visualStateSceneNode2.Name == defaultStateRecord.StateName) { visualStateSceneNode1 = visualStateSceneNode2; } } if (visualStateSceneNode1 == null) { VisualStateManagerSceneNode.EnsureNameAvailable(rootNode, defaultStateRecord.StateName); stateGroupSceneNode1.AddState(rootNode, defaultStateRecord.StateName); } } } }
public static void UpdateHasExtendedVisualStateManager(SceneNode editingContainer) { SceneNode hostNode = VisualStateManagerSceneNode.GetHostNode(editingContainer); if (hostNode == null) { return; } IList <VisualStateGroupSceneNode> stateGroups = VisualStateManagerSceneNode.GetStateGroups(hostNode); bool flag1 = stateGroups.Count > 0; bool flag2 = false; if (flag1) { IProperty property1 = editingContainer.ProjectContext.ResolveProperty(VisualStateManagerSceneNode.UseFluidLayoutProperty); IProperty property2 = editingContainer.ProjectContext.ResolveProperty(VisualStateManagerSceneNode.TransitionEffectProperty); if (property1 != null) { foreach (VisualStateGroupSceneNode stateGroupSceneNode in (IEnumerable <VisualStateGroupSceneNode>)stateGroups) { if ((bool)stateGroupSceneNode.GetLocalOrDefaultValue((IPropertyId)property1)) { flag2 = true; break; } if (property2 != null) { foreach (SceneNode sceneNode in (IEnumerable <VisualStateTransitionSceneNode>)stateGroupSceneNode.Transitions) { if (sceneNode.GetLocalOrDefaultValue((IPropertyId)property2) != null) { flag2 = true; break; } } if (flag2) { break; } } } } } bool set = flag2 || flag1 && VisualStateManagerSceneNode.CanOnlySupportExtendedVisualStateManager(editingContainer); if (VisualStateManagerSceneNode.GetHasExtendedVisualStateManager(hostNode) == set) { return; } VisualStateManagerSceneNode.SetHasExtendedVisualStateManager(hostNode, set); }
public static VisualStateGroupSceneNode AddStateGroup(SceneNode ownerNode, SceneNode rootNode, string groupName) { ProjectContext projectContext = (ProjectContext)ownerNode.ProjectContext.GetService(typeof(ProjectContext)); ToolkitHelper.AddToolkitReferenceIfNeeded((ITypeResolver)projectContext, ownerNode.DesignerContext.ViewUpdateManager); IType type = projectContext.ResolveType(ProjectNeutralTypes.VisualStateGroup); if (type == null || projectContext.PlatformMetadata.IsNullType((ITypeId)type)) { return((VisualStateGroupSceneNode)null); } VisualStateGroupSceneNode stateGroupSceneNode = VisualStateGroupSceneNode.Factory.Instantiate(ownerNode.ViewModel); VisualStateManagerSceneNode.GetStateGroups(ownerNode).Add(stateGroupSceneNode); string validElementId = new SceneNodeIDHelper(ownerNode.ViewModel, rootNode).GetValidElementID((SceneNode)stateGroupSceneNode, groupName); stateGroupSceneNode.Name = validElementId; return(stateGroupSceneNode); }
public static VisualStateGroupSceneNode FindGroupByName(SceneNode ownerNode, string name) { foreach (VisualStateGroupSceneNode stateGroupSceneNode in (IEnumerable <VisualStateGroupSceneNode>)VisualStateManagerSceneNode.GetStateGroups(ownerNode)) { if (stateGroupSceneNode.Name == name) { return(stateGroupSceneNode); } } return((VisualStateGroupSceneNode)null); }