Создайте пользовательский VisualState в xaml и вручную установите его в CodeBehind - PullRequest
5 голосов
/ 20 октября 2011

У меня есть стиль TabItem, в котором есть VisualStates.

<VisualState x:Name="MouseOver"> 
<!-- Tab turns bronze when mouseover -->
</VisualState>

Теперь я хочу иметь собственное визуальное состояние и вручную устанавливать состояние в codebehind вместо того, чтобы полагаться на событие MouseOver.

<VisualState x:Name="CustomVisualState">
<!-- this will be a storyboard to cause flashing -->
</VisualState> 

Тогда мне нужно установить его в CodeBehind.

MyTabItem.VisualState = CustomVisualState.  //something like this

Ответы [ 3 ]

14 голосов
/ 20 октября 2011

Вы пробовали VisualStateManager.GoToState (Control, "stateName", UseTransition); Принимает элемент управления, строку с именем пользовательского состояния и флагом bool для использования переходов.
Дополнительный пример здесь

1 голос
/ 20 января 2015

Попробуйте это,

VisualStateManager.GoToElementState(Control, "StateName", true/false);

или

VisualStateManager.GoToState(Control, "StateName", true/false);
0 голосов
/ 06 января 2019

VisualStateManager также позволяет указать, когда элемент управления входит в конкретное состояние. Метод, который вы должны вызвать, чтобы изменить Штаты зависят от вашего сценария. Если вы создаете элемент управления, который использует VisualStateManager в его ControlTemplate вызывает метод GoToState. Для получения дополнительной информации о том, как создать элементы управления, которые используют VisualStateManager, см. Создание элемента управления, который имеет настраиваемый Внешность. Если вы используете VisualStateManager вне ControlTemplate (например, если вы используете VisualStateManager в UserControl или в отдельном элементе), вызовите метод GoToElementState. В любом случае VisualStateManager выполняет логику, которая требуется правильно запускать и останавливать раскадровки, которые связано с вовлеченным государством. - VisualStateManager Class

Чем отличаются GoToElementState и GoToState .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...