c# .net wpf animation eventtrigger

c# - Creando Storyboard en código detrás en WPF



.net animation (2)

El siguiente código está funcionando bien.

<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>

Pero en este From y los valores son estáticos . Necesito pasar los valores dinámicamente basados ​​en la resolución del sistema. Así que necesito que se cree en el código detrás. Es posible de hacer ?

¿Cómo convertirlo en codebehind?


Agregar el código de ejemplo de comentario de djerry se vería así:

var anim = new DoubleAnimation { From = 1920, To = 1, }; wnd.BeginAnimation(Window.LeftProperty, anim);

y tendría que tener este código en el controlador de eventos cargado en la ventana. Espero que esto ayude.


Cuando trabaje en código, no necesita Storyboard realmente, solo animaciones para cosas básicas, como las que muestra en su pregunta. Hice una pequeña muestra para mostrar lo fácil que funciona.

Este es el código completo detrás de la ventana principal:

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); } } }

Así es como se ve el 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>

Ponga esto en una aplicación WPF y vea cómo funciona, experimente con ella y pruebe otras animaciones / propiedades.