public static bool GoToElementState(FrameworkElement element, object targetObject, string stateName, bool useTransitions) { var root = FindNearestStatefulFrameworkElement(element); var customVisualStateManager = VisualStateManager.GetCustomVisualStateManager(root) as ExtendedVisualStateManager; return((customVisualStateManager != null) && customVisualStateManager.GoToStateInternal(root, targetObject, stateName, useTransitions)); }
private static FrameworkElement FindNearestStatefulFrameworkElement(FrameworkElement element) { while (element != null && VisualStateManager.GetCustomVisualStateManager(element) == null) { element = element.Parent as FrameworkElement; } return(element); }
public static bool GoToElementState(FrameworkElement root, string stateName, bool useTransitions) { var _visualStateManager = VisualStateManager.GetCustomVisualStateManager(root) as ExtendedVisualStateManager; if (_visualStateManager != null) { return(_visualStateManager.GoToStateInternal(root, stateName, useTransitions)); } else { return(false); } }
private static void OnVisualStateChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { if (e.NewValue == null) { return; } if (d is FrameworkElement element) { var manager = (BindableVisualStateManager)VisualStateManager.GetCustomVisualStateManager(element); if (manager != null) { manager.GoToState(element, e.NewValue.ToString(), true); } } }
/// <summary> /// Transfers the styles and transitions from two framework elements. /// </summary> /// <param name="oldElement">The old element.</param> /// <param name="newElement">The new element.</param> public static void TransferStylesAndTransitions(this FrameworkElement oldElement, FrameworkElement newElement) { Argument.IsNotNull("oldElement", oldElement); Argument.IsNotNull("newElement", newElement); Log.Debug("Transferring styles and transitions"); var name = oldElement.Name; var renderTransform = oldElement.RenderTransform; var renderTransformOrigin = oldElement.RenderTransformOrigin; oldElement.RenderTransform = null; oldElement.Name = "__dynamicReplacement".GetUniqueControlName(); newElement.Name = name; newElement.RenderTransform = renderTransform; newElement.RenderTransformOrigin = renderTransformOrigin; var customVisualStateManager = VisualStateManager.GetCustomVisualStateManager(oldElement); if (customVisualStateManager != null) { VisualStateManager.SetCustomVisualStateManager(oldElement, null); VisualStateManager.SetCustomVisualStateManager(newElement, customVisualStateManager); } var oldContentVisualStateGroups = VisualStateManager.GetVisualStateGroups(oldElement); if (oldContentVisualStateGroups.Count > 0) { // Copy to temp list, then clear, then add them to new parent var tempList = new List <VisualStateGroup>(oldContentVisualStateGroups.Cast <VisualStateGroup>()); oldContentVisualStateGroups.Clear(); var newContentVisualStateGroups = VisualStateManager.GetVisualStateGroups(newElement); foreach (var visualStateGroup in tempList) { newContentVisualStateGroups.Add(visualStateGroup); } } Log.Debug("Transferred styles and transitions"); }
public static bool GoToElementState(FrameworkElement root, string stateName, bool useTransitions) { ExtendedVisualStateManager customVisualStateManager = VisualStateManager.GetCustomVisualStateManager(root) as ExtendedVisualStateManager; return((customVisualStateManager != null) && customVisualStateManager.GoToStateInternal(root, stateName, useTransitions)); }
public void GetCustomVSMNullDO() { Assert.Throws(() => VisualStateManager.GetCustomVisualStateManager(null), typeof(ArgumentNullException)); }