示例#1
0
        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);
            }
        }
示例#2
0
        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);
        }
示例#3
0
        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);
                    }
                }
            }
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }
示例#6
0
 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);
 }