Animación de controles móviles en wpf
No todos los contenedores principales brindan soporte para el desplazamiento de posición, por lo que es mejor utilizar el margen para representar su desplazamiento de posición. Aquí hay un ejemplo (simplemente guárdelo como un documento xaml y ábralo en IE. En el ejemplo, al hacer clic en el botón se genera una animación con desplazamiento hacia arriba y al hacer clic derecho en el botón se genera una animación con desplazamiento hacia la izquierda):
& ltcanvas xmlns = "/winfx/2006/xaml/presentation " & gt;
& ltborder Ancho = " 200 " Alto = " 200 " Fondo = " rojo " Nombre = " BDR "/& gt ;
& ltButton Content="abc " >>p>
& ltButton. Trigger & gt
& ltevent trigger routed event = " Button. MouseRightButtonUp " & gt
& ltevent trigger. Acción & gt
& ltBeginStoryboard Name="sb1 " >>p>
& ltStoryboard& gt
& ltThicknessAnimation From="0, 0, 0, 0 "A= Guión gráfico "100,0,0,0". TargetName="bdr "Guión gráfico. TargetProperty="Margen"/>.
& lt/story board>
& lt/BeginStoryboard>
& lt/EventTrigger acción>
& lt/event trigger > ;
& ltevent trigger routed event = " base del botón. Haga clic en " >;
& ltEvent trigger. Acción & gt
& ltBeginStoryboard Name="sb2 " >>p>
& ltStoryboard& gt
& ltThicknessAnimation From="0, 0, 0, 0 "A= Guión gráfico "0,100,0,0". TargetName="bdr "Guión gráfico. TargetProperty="Margen"/>.
& lt/story board>
& lt/BeginStoryboard>
& lt/EventTrigger acción>
</event trigger>
</botón. Trigger>
& lt/Button>
& lt/Canvas>
Por supuesto, si el contenedor principal proporciona un desplazamiento de posición, también se pueden usar atributos adicionales ( por ejemplo, Canvas proporciona Izquierda, Superior, etc. para describir el desplazamiento de posición de sus elementos secundarios). El siguiente también es un ejemplo (guárdelo como documento xaml y ábralo en IE.
En el ejemplo, al hacer clic en el botón se genera una animación con tendencia hacia arriba y al hacer clic con el botón derecho en el botón se genera una animación con tendencia a la izquierda):
& ltcanvas xmlns = "/winfx/2006/xaml/presentation " & gt;
& ltborder Ancho = " 200 " Alto = " 200 " Fondo = " rojo " Nombre = " BDR "/& gt;
& ltButton Content="abc " >
& ltBotón. Trigger & gt
& ltevent trigger routed event = " Button. MouseRightButtonUp " & gt
& ltevent trigger. Acción& gt
& ltBeginStoryboard Name="sb1 " >>p>
& ltStoryboard& gt
& ltdoble animación De =" 0 " A =" 100 "Storyboard. TargetName="bdr "Guión gráfico. TargetProperty="(Canvas.top)"/>;
& lt/story board & gt;
& lt/BeginStoryboard & gt;
& lt /EventTrigger action>
& lt/event trigger >
& ltevent trigger routed event = " base de botón. Haga clic" >;
& lt evento trigger. Acción& gt
& ltBeginStoryboard Name="sb2 " >>p>
& ltStoryboard& gt
& ltdoble animación De =" 0 " A =" 100 "Storyboard. TargetName="bdr "Guión gráfico. TargetProperty="(Canvas.left)"/>;
& lt/story board & gt;
& lt/BeginStoryboard & gt;
& lt /Acción de EventTrigger>
& lt/event trigger>
& lt/Botón. Trigger>
</Button>
</Canvas>
-
En cuanto a la otra demanda: la demanda de código C# es en realidad no es difícil de lograr. Si se establece Margen, es directamente bdr. margen = nuevo espesor(...).
Establece propiedades adicionales del lienzo. La izquierda es BDR setvalue(canvas. propiedad izquierda, su nuevo valor);
Simplemente convierta el contenido de xaml a C#