Silverlight: VisualStateManager.GetVisualStateGrou

2019-07-20 03:11发布

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.

2条回答
你好瞎i
2楼-- · 2019-07-20 03:31

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;
}
查看更多
男人必须洒脱
3楼-- · 2019-07-20 03:44

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.

查看更多
登录 后发表回答