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);
            }
        }
Example #4
0
        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);
                }
            }
        }
Example #5
0
        /// <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));
        }
Example #7
0
 public void GetCustomVSMNullDO()
 {
     Assert.Throws(() => VisualStateManager.GetCustomVisualStateManager(null), typeof(ArgumentNullException));
 }