Le code suivant fonctionne correctement.
<Window.Triggers>
<EventTrigger RoutedEvent="Window.Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Duration="0:0:.8" Storyboard.TargetProperty="Left" From="1920" To="0" AccelerationRatio=".1"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Window.Triggers>
Mais dans ce From
et To
les valeurs sont statique. J'ai besoin de passer les valeurs de la résolution système basée dynamiquement. J'ai donc besoin qu'il soit créé en code derrière. Est-il possible de faire?
Comment le convertir en codebehind?
Lorsque vous travaillez dans du code, vous n'avez pas vraiment besoin de Storyboard, juste des animations pour les choses de base, comme vous le montrez dans votre question. J'ai fait un petit échantillon pour montrer à quel point cela fonctionne.
Voici le code complet derrière la fenêtre principale:
namespace WpfCSharpSandbox
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
WidenObject(150, TimeSpan.FromSeconds(1));
}
private void WidenObject(int newWidth, TimeSpan duration)
{
DoubleAnimation animation = new DoubleAnimation(newWidth, duration);
rctMovingObject.BeginAnimation(Rectangle.WidthProperty, animation);
}
}
}
Voici à quoi ressemble le XAML:
<Window x:Class="WpfCSharpSandbox.MainWindow"
xmlns="http://schemas.Microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.Microsoft.com/winfx/2006/xaml"
Title="Sandbox" Height="350" Width="525">
<Grid Background="#333333">
<Rectangle x:Name="rctMovingObject" Fill="LimeGreen" Width="50" Height="50"/>
</Grid>
</Window>
Mettez-le dans une application WPF et voyez comment cela fonctionne, expérimentez-le et essayez d'autres animations/propriétés.
L'ajout de l'exemple de code de commentaire de djerry ressemblerait à ceci:
var anim = new DoubleAnimation {
From = 1920,
To = 1,
};
wnd.BeginAnimation(Window.LeftProperty, anim);
et vous devriez avoir ce code dans le gestionnaire d'événements chargé dans la fenêtre. J'espère que cela t'aides.