2009-06-17 4 views
0

Angenommen, ich habe die folgenden XAML-Snippets, meine Verwirrung ist, was bedeutet der Wert für Storyboard.TargetProperty? die Bedeutung von "(UIElement.RenderTransform). (TransformGroup.Children) [0]. (ScaleTransform.ScaleX)".Silverlight Animationsproblem

 <DoubleAnimationUsingKeyFrames Storyboard.TargetName="p1" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" BeginTime="00:00:00"> 
      <SplineDoubleKeyFrame KeyTime="00:00:00" Value="1"/> 
      <SplineDoubleKeyFrame KeyTime="00:00:00.2500000" Value="1"/> 
      <SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="1"/> 
     </DoubleAnimationUsingKeyFrames> 

...

 <Path Height="2.75" Width="2.75" Data="M2.75,1.375 C2.75,2.1343915 2.1343915,2.75 1.375,2.75 C0.61560845,2.75 0,2.1343915 0,1.375 C0,0.61560845 0.61560845,0 1.375,0 C2.1343915,0 2.75,0.61560845 2.75,1.375 z" Fill="#FF9F9B9B" Stretch="Fill" Stroke="#FF000000" StrokeThickness="0" Canvas.Left="7" Canvas.Top="14" x:Name="p1"> 
      <Path.RenderTransform> 
       <TransformGroup> 
        <ScaleTransform/> 
        <SkewTransform/> 
        <RotateTransform/> 
        <TranslateTransform/> 
       </TransformGroup> 
      </Path.RenderTransform> 
     </Path> 

Vielen Dank im Voraus, George

Antwort

1

Die Storyboard.TargetProperty gibt eine bestimmte Eigenschaft im Laufe der Zeit zu ändern.

Wenn Sie es selbst geschrieben haben, sagen Sie so etwas wie könnte:

  <DoubleAnimationUsingKeyFrames Storyboard.TargetName="myRectange" 
Storyboard.TargetProperty="Width" BeginTime="00:00:00"> 
        <SplineDoubleKeyFrame KeyTime="00:00:00" Value="1"/> 
        <SplineDoubleKeyFrame KeyTime="00:00:00.2500000" Value="1"/> 
        <SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="1"/> 
      </DoubleAnimationUsingKeyFrames> 

und vereinfachen die Dinge ziemlich viel. Im obigen Beispiel ändern Sie die Eigenschaft "Breite" Ihres Rechtecks ​​im Zeitverlauf. Blend, in seiner unendlichen WYSIWYG-Mode, macht das Targeting etwas komplizierter.

In Ihrem Beispiel wird eine Transformation auf das Rechteck angewendet, und Sie ändern diese Transformation im Laufe der Zeit.

Klarstellung: Storyboard.TargetProperty = ". (UIElement.RenderTransform) (TransformGroup.Children) [0] (ScaleTransform.ScaleX)" ist ein PropertyPath. Es gibt die Eigenschaft an, die im Laufe der Zeit geändert wird. In diesem Beispiel zielen wir auf die Eigenschaft Rectangle -> RenderTransforms -> erstes untergeordnetes Objekt (ScaleTransform) -> X skalieren ab. So sagen wir, was sich ändern wird. Die Keyframes geben an, wie sich dieser Wert im Laufe der Zeit ändert.

Etwas zu beachten: Eine Transformation ist eine statische Änderung. Wenden Sie ein ScaleX von 2 an, und das Ding verdoppelt sich in der X-Dimension. Aber im Laufe der Zeit ändert sich nichts (nichts bewegt sich auf dem Bildschirm). Dazu benötigen Sie eine Animation, um die Transformation im Laufe der Zeit zu ändern.

hth, Erik

+0

Eigentlich meine Verwirrung ist, was Element tut " "(UIElement.RenderTransform). (TransformGroup.Children) [0]. (ScaleTransform.ScaleX)" bezieht sich auf? – George2

+0

ich hinzugefügt haben ein Klärung. –