Silverlight: VisualStateManager.GetVisualStateGroups нет, как их получить? - PullRequest
2 голосов
/ 19 июля 2011

Я пытался использовать VisualStateManager.GetVisualStateGroups в переопределении OnAttached моего пользовательского поведения, а также в обработчике событий, добавленном к событию AssociatedObject.Loaded в этом поведении.Оба раза я получаю пустой список.

Есть ли другой способ получить группы визуальных состояний, определенные для элемента управления, или другой обработчик событий, к которому я должен присоединиться?элемент управления имеет VisualStateGroups и VisualStates.

Ответы [ 2 ]

4 голосов
/ 11 октября 2012

На основании ответа Энтони.Здесь я привожу пример для приложения Metro.

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 голосов
/ 20 июля 2011

Обычно прикрепленное свойство VisualStateGroups присоединяется к верхнему уровню FrameworkElement в элементе управления ControlTemplate. Следовательно, чтобы получить это значение, вам может потребоваться использовать VisualTreeHelper, чтобы получить первого потомка элемента управления и посмотреть, имеет ли оно свойство VisualStateGroups.

...