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); }
public void AddStateListenersCollection(VisualStateListenerCollection stateListeners) { _listeners.Add(UpdateListenerCollection(stateListeners)); }
private VisualStateListenerCollection UpdateListenerCollection(VisualStateListenerCollection listenerCollection) { listenerCollection.IsActive = string.Equals(CurrentStateName, listenerCollection.StateName, StringComparison.Ordinal); return(listenerCollection); }