Как вернуться в состояние "Base" с помощью VisualStateManager?
Я знаю, что мы можем использовать
VisualStateManager.GoToState(this,"SomeState1",true);
чтобы войти в SomeState1, но теперь, как вернуться в базовое состояние, например без состояния, состояние, в которое был загружен элемент управления.
VisualStateManager.GoToState(this,"base",true);
// OR
VisualStateManager.GoToState(this,"",true);
// OR
VisualStateManager.GoToState(this,null,true);
Проблема в том, что нет такого способа вернуться к исходному или базовому состоянию, тогда мне придется всегда создавать первое состояние, а в contructor перейти к первому состоянию в начале управления.
Я не нашел никакой документации, поэтому я пытаюсь использовать все комбинации, но не нашел никакого рабочего.
Ответы
Ответ 1
Элементы управления по умолчанию определяют "нормальное" визуальное состояние в группе CommonStates, которая возвращается на выведение мыши и т.д. Я думаю, вам нужно будет следовать одному и тому же шаблону, поскольку я предполагаю, что это настраиваемый элемент управления?
Ответ 2
Нормальный!= Базовый.
Base - это только начальное состояние управления перед любым визуальным состоянием (например, перед активным VSM).
Если вы прочитали эту статью в
Я также считаю это немного раздражающим, что состояние VSM не может быть легко удалено, хотя вышеупомянутое решение имеет смысл. Возможно, они исправит это в будущем.
Ответ 3
Для этого вам нужно сначала определить ваше "базовое" состояние.
Сделка заключается в том, что если вы определяете визуальное состояние, которое не содержит раскадровку, тогда это состояние будет эффективно равно "базовому" состоянию - та, в которую был загружен элемент управления.
<VisualStateGroup x:Name="TheGroup">
<VisualState x:Name="SomeState1">
<Storyboard>
...
</Storyboard>
</VisualState>
<VisualState x:Name="BaseState" /> <!-- Note: the VisualState tag is empty -->
</VisualStateGroup>
Затем переключитесь в это состояние:
VisualStateManager.GoToState( this, "BaseState", true );