Несколько способов.
1: применить RepositionThemeTransition к свойству ChildrenTransitions
родительского StackPanel кнопки. Каждый раз, когда любой из дочерних элементов StackPanels перемещается, он будет анимирован на новую позицию.
<StackPanel x:Name="MenuPrincipal" VerticalAlignment="Center" HorizontalAlignment="Center">
<StackPanel.ChildrenTransitions>
<TransitionCollection>
<RepositionThemeTransition IsStaggeringEnabled="False" />
</TransitionCollection>
</StackPanel.ChildrenTransitions>
...
<Button Margin="0,30,0,20" Content="Registrar Usuario" Style="{StaticResource BotonUsuarioNuevo}" Click="RegistrarUsuario_Click"/>
...
</StackPanel>
(Это можно сделать с помощью любой панели, например, Grid или Canvas и т. Д. c)
2: Применить переход положения к кнопке. (Не совсем уверен, что это работает)
<Button Margin="0,30,0,20" Content="Registrar Usuario" Style="{StaticResource BotonUsuarioNuevo}" Click="RegistrarUsuario_Click">
<Button.Transitions>
<TransitionCollection>
<RepositionThemeTransition />
</TransitionCollection>
</Button.Transitions>
</Button>
Применение анимации смещения композиции к кнопке (или любому другому элементу). Любое изменение положения макета, примененное к целевому элементу его родителем, запускает анимацию. Эта анимация вы можете настроить продолжительность и функцию замедления, используемые при желании.
<Button Loaded="SetReposition" Margin="0,30,0,20" Content="Registrar Usuario" Style="{StaticResource BotonUsuarioNuevo}" Click="RegistrarUsuario_Click"/>
public void SetReposition(object sender, RoutedEventArgs args)
{
UIElement e = (UIElement)sender;
Visual v = ElementCompositionPreview.GetElementVisual(e);
var o = v.Compositor.CreateVector3KeyFrameAnimation();
o.Target = nameof(Visual.Offset);
o.InsertExpressionKeyFrame(0, "this.StartingValue");
o.InsertExpressionKeyFrame(1, "this.FinalValue");
o.Duration = TimeSpan.FromSeconds(0.3);
var collection = v.Compositor.CreateImplicitAnimationCollection();
collection.Add(nameof(Visual.Offset), o);
v.ImplicitAnimations = collection;
}