protected override void OnTargetChanged(FrameworkElement oldTarget, FrameworkElement newTarget) { base.OnTargetChanged(oldTarget, newTarget); FrameworkElement resolvedControl; if (String.IsNullOrEmpty(TargetName) && !IsTargetObjectSet) { if (!VisualStateUtilities.TryFindNearestStatefulControl(AttachedObject, out resolvedControl) && (null != resolvedControl)) { throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, "Target {0} does not define any VisualStateGroups.", new object[] { resolvedControl.Name })); } } else { resolvedControl = Target; } StateTarget = resolvedControl; }
protected override void Invoke(object parameter) { if (null != StateTarget && Enum.IsDefined(typeof(ApplicationViewState), parameter)) { string stateName; var viewState = (ApplicationViewState)parameter; switch (viewState) { case ApplicationViewState.FullScreenLandscape: stateName = FullScreenLandscapeStateName; break; case ApplicationViewState.FullScreenPortrait: stateName = FullScreenPortraitStateName; break; case ApplicationViewState.Filled: stateName = FilledStateName; break; case ApplicationViewState.Snapped: //if (Window.Current.Bounds.Left > 0) // Debug.WriteLine("Right side"); //else // Debug.WriteLine("Left side"); stateName = SnappedStateName; break; default: stateName = string.Empty; break; } if (string.IsNullOrEmpty(stateName)) { stateName = viewState.ToString(); } VisualStateUtilities.GoToState(StateTarget, stateName, UseTransitions); } }