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
.
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.
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