2010-01-13 2 views
5

Я создал собственный элемент управления, который расширяет управление контентом. Внутри этого у меня есть модель деталей и состояний, которая работает нормально.Менеджер визуальных состояний на пользовательском контроле

Затем я использую это как корень моего XAML (размещение кода в папке шаблонов в Blend,)

Все отлично работает, я могу открыть новый «DaveControl» и получить функциональные возможности, которые я хочу.

Однако, если я затем добавлю здесь некоторые визуальные состояния, такие как alertOnScreen, и попробуйте использовать visualstatemanager, это не сработает.

информация не указана.

Поведение в SL3 GotoVisualState отлично работает!

Как я могу заставить визуальное состояние работать в коде?

+0

Просматривая поведение, он принимает элемент структуры, а не элемент управления. Это работает. – DavidA

ответ

7

Таким образом, решение заключается в следующем: Использование Расширенная Визуальная государственный менеджер!

ExtendedVisualStateManager.GoToElementState(this.LayoutRoot as FrameworkElement, "OffScreen", true); 

Это работает, потому что он принимает элемент Framework ... среди прочего. Workaround for VisualStateManager.GoToState not working on Window

+0

+1 Лучше всего, чтобы появился первый ответ;) – AnthonyWJones

1

Вы добавили набор доступных состояний в виде набора атрибутов 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 
+0

Anthony, Визуальные состояния для управления там работают. Элемент управления в основном является пользовательским контейнером ... Я использую его как корневой элемент в своем файле xaml File-> New Dave Control (таким образом, я могу получить из класса без проблемы частичного класса). Теперь скажите, что у этого элемента управления есть кнопка на «Add Address», которая требует что-то, чтобы двигаться на сцене, обычай для этого экземпляра ... следовательно, моя проблема. Спасибо за ответ, с заголовком я уверен, что это поможет кому-то. – DavidA