private static void _ChangeState(CollapsiblePanel panel, string goToState, string stateStoryboardName)
        {
            if (panel != null && goToState != null)
            {
                VisualStateManager.GoToState((panel as Control), goToState, true);
            }

            if (stateStoryboardName != null)
            {
                Storyboard sb = (panel as FrameworkElement).Resources[stateStoryboardName] as Storyboard;
                if (sb != null)
                {
                    sb.Begin();
                }
            }
        }
        private static void IsExpandedChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
        {
            bool             expanded = (bool)e.NewValue;
            CollapsiblePanel panel    = o as CollapsiblePanel;

            if (panel != null)
            {
                if (expanded)
                {
                    _ChangeState(panel, Expand, panel._RollDownStoryboardName);
                }
                else
                {
                    _ChangeState(panel, Collapse, panel._RollUpStoryboardName);
                }
            }
        }