Master Morality
Master Morality

Reputation: 5907

Silverlight: VisualStateManager.GetVisualStateGroups doesn't, How can I get them?

I've tried using VisualStateManager.GetVisualStateGroups in the OnAttached override of my custom behavior, as well as in an event handler added to AssociatedObject.Loaded event in that behavior. Both times I get an empty list.

Is there another way to get the visual state groups defined for a control, or another event handler I should attach to?

Be for it's asked, yes, the control has VisualStateGroups and VisualStates.

Upvotes: 3

Views: 2672

Answers (2)

Jeff T.
Jeff T.

Reputation: 2271

Based on Anthony's answer. Here I give an example for Metro App.

public VisualState GetCurrentState(string stateGroupName)
{
    VisualStateGroup stateGroup1 = null;

    IList<VisualStateGroup> list = VisualStateManager.GetVisualStateGroups(VisualTreeHelper.GetChild(this, 0) as FrameworkElement);

    foreach (var v in list)
        if (v.Name == stateGroupName)
        {
            stateGroup1 = v;
            break;
        }

    return stateGroup1.CurrentState;
}

Upvotes: 6

AnthonyWJones
AnthonyWJones

Reputation: 189439

Usually the VisualStateGroups attached property is attached to the top level FrameworkElement in the control's ControlTemplate. Hence to retrieve this value you may need to use the VisualTreeHelper to get the first child of the control and see if that has a VisualStateGroups property.

Upvotes: 3

Related Questions