开发者

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 Vis开发者_如何学运维ualStateGroups and VisualStates.


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;
}


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜