Я создал пользовательский элемент управления, который расширяет управление содержанием. В этом у меня есть части и модель состояний, которая хорошо работает.
Я затем использую это в качестве корня моего xaml (помещающий код в шаблонную папку в Смешении)
Все хорошо работает, я могу открыть новый 'DaveControl' и получить функциональность, которую я хочу.
Однако, Если я затем добавляю, делают некоторые визуальные состояния здесь, такие как alertOnScreen и попытка использовать visualstatemanager, это не работает.
заразите нет никаких перечисленных состояний.
Поведение в SL3 GotoVisualState хорошо работает хотя!
Как я могу заставить визуальное состояние работать в коде?
Таким образом, решение следующее: Использовать расширенный визуальный менеджер состояния!
ExtendedVisualStateManager.GoToElementState(this.LayoutRoot as FrameworkElement, "OffScreen", true);
Это работает, так как для этого, помимо прочего, нужен элемент фреймворка. Обходной путь для VisualStateManager.GoToState не работает на Window
Добавлен ли набор доступных состояний в виде набора атрибутов TemplateVisualState
в классе? Blend использует их для настройки списка доступных состояний.
Ваш класс должен выглядеть следующим образом:-
[TemplateVisualState(Name = "MyGroup1State1", GroupName = "MyGroup1")]
[TemplateVisualState(Name = "MyGroup1State2", GroupName = "MyGroup1")]
[TemplateVisualState(Name = "MyGroup2State1", GroupName = "MyGroup2")]
[TemplateVisualState(Name = "MyGroup2State2", GroupName = "MyGroup2")]
[TemplatePart(...)]
[TemplatePart(...)]
public class MyControl : ContentControl