我已经尝试VisualStateManager.GetVisualStateGroups
在我的自定义行为的OnAttached
覆盖中使用,以及AssociatedObject.Loaded
在该行为中添加到事件的事件处理程序中使用。两次我都得到一个空列表。
是否有另一种方法来获取为控件定义的视觉状态组,或者我应该附加到另一个事件处理程序?
被问到,是的,控件有VisualStateGroups
和VisualStates
。
我已经尝试VisualStateManager.GetVisualStateGroups
在我的自定义行为的OnAttached
覆盖中使用,以及AssociatedObject.Loaded
在该行为中添加到事件的事件处理程序中使用。两次我都得到一个空列表。
是否有另一种方法来获取为控件定义的视觉状态组,或者我应该附加到另一个事件处理程序?
被问到,是的,控件有VisualStateGroups
和VisualStates
。
根据安东尼的回答。这里我举一个 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;
}
通常附加属性附加到控件的VisualStateGroups
顶层。因此,要检索此值,您可能需要使用来获取控件的第一个子项并查看它是否具有属性。FrameworkElement
ControlTemplate
VisualTreeHelper
VisualStateGroups