Exemple #1
0
        private void GoToState(string newState, string oldState, bool useTransitions)
        {
            var cnt = 2;
            VisualStateListenerCollection oldListener = null;
            VisualStateListenerCollection newListener = null;

            // ReSharper disable once ForCanBeConvertedToForeach
            for (var index = 0; index < _listeners.Count; index++)
            {
                var listener = _listeners[index];
                if (string.Equals(listener.StateName, newState, StringComparison.Ordinal))
                {
                    newListener = listener;
                    cnt--;
                }

                if (string.Equals(listener.StateName, oldState, StringComparison.Ordinal))
                {
                    oldListener = listener;
                    cnt--;
                }

                if (cnt == 0)
                {
                    break;
                }
            }

            newListener?.SetIsActive(true, useTransitions);
            oldListener?.SetIsActive(false, useTransitions);

            CurrentStateName = newState;
        }
        private VisualStateListenerCollection GetListenerCollection(string name, bool create)
        {
            var listenerCollection = FindListenerCollection(name);

            if (listenerCollection == null && create == false)
            {
                return(null);
            }

            var groupObserver = FindGroupObserverByStateName(name);

            if (groupObserver != null)
            {
                listenerCollection = groupObserver.GroupListener.GetListenerCollection(name, create);
            }

            if (listenerCollection != null)
            {
                _stateListenerCollections.Add(listenerCollection);
                return(listenerCollection);
            }

            listenerCollection = new VisualStateListenerCollection(name);
            _stateListenerCollections.Add(listenerCollection);

            var visualStateGroup = EnumerateVisualStateGroups().SingleOrDefault(g => g.States.Cast <VisualState>().Any(s => string.Equals(s.Name, name, StringComparison.OrdinalIgnoreCase)));

            if (visualStateGroup == null)
            {
                return(listenerCollection);
            }

            var groupListener = new VisualGroupListener();

            groupListener.AddStateListenersCollection(listenerCollection);
            groupObserver = new VisualStateGroupObserver(visualStateGroup, groupListener);
            _visualStateGroupObservers.Add(groupObserver);

            return(listenerCollection);
        }
Exemple #3
0
 public void AddStateListenersCollection(VisualStateListenerCollection stateListeners)
 {
     _listeners.Add(UpdateListenerCollection(stateListeners));
 }
Exemple #4
0
 private VisualStateListenerCollection UpdateListenerCollection(VisualStateListenerCollection listenerCollection)
 {
     listenerCollection.IsActive = string.Equals(CurrentStateName, listenerCollection.StateName, StringComparison.Ordinal);
     return(listenerCollection);
 }