public static VisualStateGroup GetVisualStateGroup(this FrameworkElement root, string groupName)
 {
     foreach (FrameworkElement frameworkElement in ExtensionMethods.PrependWith <FrameworkElement>(ExtensionMethods.GetVisualAncestors(root), root))
     {
         foreach (object obj in (IEnumerable)VisualStateManager.GetVisualStateGroups(frameworkElement))
         {
             VisualStateGroup visualStateGroup = obj as VisualStateGroup;
             if (visualStateGroup != null && visualStateGroup.Name == groupName)
             {
                 return(visualStateGroup);
             }
         }
     }
     return((VisualStateGroup)null);
 }