2009-03-29 6 views
2

Ich bin auf der Suche nach einer einfachen Möglichkeit, einige XAML-Animationen in C# -Code zu konvertieren. Gibt es dafür ein Tool?Gibt es ein Tool zum Konvertieren von XAML nach C# (Code hinten)?

Danke!

Wally

Dies ist der Code, den ich zu konvertieren Ich versuche:

<Storyboard x:Key="Storyboard1"> 
    <Rotation3DAnimationUsingKeyFrames BeginTime="00:00:00" 
     Storyboard.TargetName="DefaultGroup" 
     Storyboard.TargetProperty="(Visual3D.Transform).(Transform3DGroup.Children)[2].(RotateTransform3D.Rotation)"> 
    <SplineRotation3DKeyFrame KeyTime="00:00:04.0200000"> 
     <SplineRotation3DKeyFrame.Value> 
     <AxisAngleRotation3D Angle="144.99999999999997" Axis="1,0,0"/> 
     </SplineRotation3DKeyFrame.Value> 
    </SplineRotation3DKeyFrame> 
    </Rotation3DAnimationUsingKeyFrames> 
</Storyboard> 
+0

ich Ihren Code formatiert. Ich hoffe, ich habe den Syntaxbaum richtig verstanden. Bitte überprüfen. – Svante

Antwort

2

Dies ist der gleiche Code in C#:

Storyboard storyboard3 = new Storyboard(); 

storyboard3.AutoReverse = false; 
Rotation3DAnimationUsingKeyFrames r3d = new Rotation3DAnimationUsingKeyFrames(); 
r3d.BeginTime = new TimeSpan(0, 0, 0, 0, 0); 
r3d.Duration = new TimeSpan(0,0,0,1,0); 

r3d.KeyFrames.Add(new SplineRotation3DKeyFrame(new AxisAngleRotation3D(new Vector3D(1,0,0),1))); 
r3d.KeyFrames.Add(new SplineRotation3DKeyFrame(new AxisAngleRotation3D(new Vector3D(1, 0, 0), 37))); 
r3d.Name = "r3d"; 

Storyboard.SetTargetName(r3d, "DefaultGroup"); 
Storyboard.SetTargetProperty(r3d, new PropertyPath("(Visual3D.Transform).(Transform3DGroup.Children)[2].(RotateTransform3D.Rotation)")); 

storyboard3.Children.Add(r3d); 
this.BeginStoryboard(storyboard3); 
2

Sie könnten XamlReader.Load verwenden (""), um es zu analysieren. Hoffe, es hilft :)

Edit:

StoryBoard myStoryBoard = (StoryBoard)XamlReader.Load("code"); 
+0

Danke für die Antwort, es funktioniert, aber ich versuche, einige Werte zur Laufzeit zu ändern, und ich denke, ich brauche direkten Zugriff auf die Variablen in der Animation, ich werde es testen ... –

+1

Sie sollten in der Lage sein, den Inhalt der Storyboards zugreifen durch die Kindersammlung (myStoryBoard.Children [0] sollte deine Rotation sein). Sie könnten auch versuchen, es vollständig in Codebehind zu erstellen, siehe: http://social.expression.microsoft.com/Forums/en-US/wpf/thread/f442644f-a6e1-47f1-8d6f-f65ab3949eee – gsnerf

1

Warum wollen Sie das XAML zu prozeduralen Code konvertieren? Wenn ich einen Ihrer Kommentare richtig lese, liegt das daran, dass Sie die Werte zur Laufzeit ändern müssen. Wenn dies der Fall ist, kann data binding besser sein. Kannst du beschreiben, was du mit dem C# machen willst, das du mit XAML nicht machen kannst?

Verwandte Themen