2009-12-08 5 views
0

J'ai du mal à faire fonctionner un PropertyPath - J'ai une transformation dans la fenêtre Ressources que j'essaie d'affecter via un StoryBoard - également dans Window ressources ...WPF PropertyPath Problème - Impossible de résoudre toutes les références de propriété dans le chemin de propriété

Heres le chemin de la propriété ... J'utilise

(Viewport2DVisual3D.Transform).(Transform3DGroup)[0].(RotateTransform3D).(RotateTransform3D.Rotation).(AxisAngleRotation3D.Angle) 

EDIT: Merci à la suggestion Anurags J'ai un peu plus loin ... (Viewport2DVisual3D.Transform) (. Transform3DGroup.Children) [0]. (RotateTransform3D.Rotation). (AxisAngleRotation3D.Angle)

mais maintenant il des erreurs avec "propriété Rotation ne pointe pas à un DependencyProperty"

Quelqu'un peut-il me remettre sur la bonne voie?

Heres le code complet ...

<Window 
x:Class="WpfApplication1.Window1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
Height="300" Width="300"> 
    <Window.Resources> 

     <Transform3DGroup x:Key="WorldTranslation"> 
      <RotateTransform3D> 
       <RotateTransform3D.Rotation> 
        <AxisAngleRotation3D Axis="0,1,0" Angle="0" /> 
       </RotateTransform3D.Rotation> 
      </RotateTransform3D> 
     </Transform3DGroup> 

      <Storyboard x:Key="MyStoryboard"> 
     <DoubleAnimation 
     Storyboard.Target="{Binding TemplatedParent}"  
     Storyboard.TargetProperty="(Viewport2DVisual3D.Transform).(Transform3DGroup.Children)[0].(RotateTransform3D.Rotation).(AxisAngleRotation3D.Angle)" 
     From="0.0" To="360" Duration="0:0:1" /> 
    </Storyboard> 

     <MeshGeometry3D 
      x:Key="squareMeshFrontLeft" 
      Positions="-1,-1,1 1,-1,1 1,1,1 -1,1,1" 
      TriangleIndices="0 1 2 0 2 3" 
      TextureCoordinates="0,1 1,1 1,0 0,0" /> 

     <DiffuseMaterial x:Key="visualHostMaterial" Brush="White" Viewport2DVisual3D.IsVisualHostMaterial="True" /> 
    </Window.Resources> 

    <Viewport3D> 
     <Viewport3D.Camera> 
      <PerspectiveCamera Position="0,0,10" LookDirection="0,0,-1" /> 
     </Viewport3D.Camera> 
     <Viewport2DVisual3D Material="{StaticResource visualHostMaterial}" Geometry="{StaticResource squareMeshFrontLeft}" > 
      <Viewport2DVisual3D.Transform> 
       <StaticResource ResourceKey="WorldTranslation" /> 
      </Viewport2DVisual3D.Transform> 
      <StackPanel Background="Blue" Width="80" Height="80"> 
       <Button Height="30" Margin="20"> 
        <Button.Content>Blah</Button.Content> 
        <Button.Triggers> 
         <EventTrigger RoutedEvent="Button.Click"> 
          <EventTrigger.Actions> 
           <BeginStoryboard Storyboard="{StaticResource MyStoryboard}" > 
           </BeginStoryboard> 
          </EventTrigger.Actions> 
         </EventTrigger> 
        </Button.Triggers> 
       </Button> 
      </StackPanel> 
     </Viewport2DVisual3D> 
       <ModelVisual3D> 
      <ModelVisual3D.Content> 
       <AmbientLight Color="White" /> 
      </ModelVisual3D.Content> 
     </ModelVisual3D> 
    </Viewport3D> 
</Window> 

Répondre

1

Tout d'abord, au lieu de DoubleAnimation, utiliser l'animation 3D KeyFrame.

et corriger votre syntaxe StoryBoard.TargetProperty à l'aide (Transform3DGroup.Children) au lieu de

vérifier cela aussi: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/78170274-a585-4cd6-85ed-edfd655d34ab

+0

Salut, merci pour votre aide, je vais certainement jeter un oeil à l'aide de la place KeyFrames de ma double animation - mais en ce qui concerne le chemin de la propriété - j'ai essayé d'ajouter les .Enfants comme vous l'avez suggéré, j'ai également enlevé le premier RotateTransform3D car je me suis rendu compte que ce n'était pas nécessaire ... heres ce que j'ai maintenant ... (Viewport2DVisual3D.Transform). (Transform3DGroup.Children) [0]. (RotateTransform3D.Rotation). (AxisAngleRotation3D.Angle) Mais maintenant, les erreurs avec la propriété 'Rotation' ne pointent pas vers un objet de dépendance. Avez-vous des idées s'il vous plaît? –

+0

Même erreur que je recevais aussi en utilisant Double Animation, C'est pourquoi j'ai dit d'utiliser 3D KeyFrame Animation au lieu de DoubleAnimation. Je n'ai pas eu le temps de le vérifier avec 3D KeyFrame Animation, vous essayez !! – viky

Questions connexes