Вы должны создать саму группу, используя XAML, который я предлагаю, затем вам нужно найти VisualStateGroup, которую вы ищете следующим образом:
VisualStateGroup visualStateGroupLookingFor = null;
var visualStateGroups = (VisualStateManager.GetVisualStateGroups(LayoutRoot));
foreach (VisualStateGroup state in visualStateGroups) {
if (state.Name == "VisualStateGroupMine") {
visualStateGroupLookingFor = state;
break;
}
}
Затем вам нужно создать новый VisualState и Storyboard для добавления, например:
var visualState = new VisualState();
var storyBoard = new Storyboard();
Теперь создайте анимацию:
var animation = new DoubleAnimation();
animation.To = 10.0;
и установите цель анимации:
//assuming this is instance of class ClassFoo
//and you want to animate it's Width
Storyboard.SetTarget(animation, this);
Storyboard.SetTargetProperty(animation, new PropertyPath(ClassFoo.WidthProperty));
Наконец добавьте анимацию (s) на вашей раскадровке дайте ему имя, добавьте его в группу визуальных состояний:
storyBoard.Children.Add(animation);
visualState.Storyboard = storyBoard;
visualState.Name = "CoolNameLikeWidthAnimation";
visualStateGroupLookingFor.States.Add(visualState);
Вот так, запустите его как обычно с помощью
VisualStateManager.GoToState(this, "CoolNameLikeWidthAnimation", true);