Friday, October 12, 2012

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

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.

Answers & Comments...

Answer: 1

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.

by : AnthonyWJoneshttp://stackoverflow.com/users/17516

Answer: 2

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; } 
by : Jeff LovesEarthhttp://stackoverflow.com/users/1613961




No comments:

Post a Comment

Send us your comment related to the topic mentioned on the blog