2011-09-03 15 views
7

Pensé que ya sabía cómo funcionan las sintaxis WPF y XAML .... wrooong.Animate Margin/Thickness

que recibieron el mensaje:

'WithEvents' variables can only be typed as classes, interfaces or type parameters with class constraints. 

Por favor, ¿sabes por qué esta sintaxis no es correcta?

Necesito usar el valor único como el doble. Funciona más tarde con un guión gráfico en código subyacente.

Saludos Error Screenshot

sólo quiero animar el rectángulo rojo con un guión gráfico en la ubicación y el tamaño. Quizás XAML es la solución correcta de todos modos? Red rectangle

+0

Vale la pena teniendo en cuenta que WP7 utiliza Silverlight, que cuenta con unas [diferencias sutiles con WPF] (http: // msdn.microsoft.com/en-us/library/cc903925(VS.95).aspx). –

Respuesta

15

Para animar espesor, utilice un Storyboard como este (del ejemplo MSDN):

<BeginStoryboard> 
    <Storyboard>  
     <!-- BorderThickness animates from left=1, right=1, top=1, and bottom=1 to 
     left=28, right=28, top=14, and bottom=14 over one second. --> 
     <ThicknessAnimation 
     Storyboard.TargetProperty="BorderThickness" 
     Duration="0:0:1.5" FillBehavior="HoldEnd" From="1,1,1,1" To="28,14,28,14" /> 
    </Storyboard> 
    </BeginStoryboard> 

En realidad, para animar cualquier propiedad que toma valores como "w, x, y, z" se utiliza un ThicknessAnimation

Me parece que lo que quiere hacer es mover el rectángulo rojo hacia la derecha.

En ese caso, ponga todo en Canvas y use una doble animación en la posición del rectángulo rojo.

De cualquier manera, el error que está recibiendo no proviene del pequeño fragmento de código que proporcionó, si desea hacerlo, proporcione el uso con más código.

Editar: desde ThicknessAnimation parece no estar disponibles en WP7, probar este lugar:

<BeginStoryboard> 
    <Storyboard>  
     <DoubleAnimation 
     Storyboard.TargetProperty="BorderThickness.Top" 
     Duration="0:0:1.5" To="15" /> 
     <DoubleAnimation 
     Storyboard.TargetProperty="BorderThickness.Left" 
     Duration="0:0:1.5" To="25" /> 
    </Storyboard> 
    </BeginStoryboard> 
+0

Consulte mi respuesta editada. –

0

Creo que está relacionado con lo que está haciendo con el MyRectangleMargin en otro lugar del XAML o código subyacente. Recuerde, Thickness es una estructura, no una clase, por lo que no podrá usarla en ningún lugar que espere una instancia de clase.

+0

He agregado un comentario en la pregunta. Quiero animar el rectángulo rojo. Quizás tienes razón. Pero, ¿cómo resolverlo? – Nasenbaer