WPF - анимация ключевого кадра не работает - PullRequest
1 голос
/ 14 декабря 2009

У меня есть раскадровка KeyFrame Animation и отдельное преобразование вращения в моем Window.Resources.

Преобразование вращения работает, так как я могу изменить угол и посмотреть, как вращается содержимое. Я знаю, что вызывается раскадровка, потому что мне потребовалось несколько раз, чтобы получить PropertyPath сразу после того, как я нажал на кнопку.

Однако теперь он ничего не делает - без ошибок, но и без вращения!

Может кто-нибудь помочь, пожалуйста?

Спасибо

Andy

<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="400">
    <Window.Resources>

        <Storyboard x:Key="myStoryboard">
            <Rotation3DAnimationUsingKeyFrames
                       Storyboard.Target="{Binding TemplatedParent}"     
                       Storyboard.TargetProperty="(Viewport2DVisual3D.Transform).(RotateTransform3D.Rotation)" >
                <Rotation3DAnimationUsingKeyFrames.KeyFrames>
                    <LinearRotation3DKeyFrame KeyTime="0:0:1">
                        <LinearRotation3DKeyFrame.Value>
                            <AxisAngleRotation3D Axis="0,1,0" Angle="0" />
                        </LinearRotation3DKeyFrame.Value>
                    </LinearRotation3DKeyFrame>
                </Rotation3DAnimationUsingKeyFrames.KeyFrames>
            </Rotation3DAnimationUsingKeyFrames>
        </Storyboard>

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

        <!-- Front, left square -->
        <MeshGeometry3D
                    x:Key="squareMeshFront"
                    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" />
        <!-- Bottom -->
        <MeshGeometry3D
                    x:Key="squareMeshBottom"
                    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,9" LookDirection="0,0,-1" />
        </Viewport3D.Camera>

        <Viewport2DVisual3D Material="{StaticResource visualHostMaterial}" Geometry="{StaticResource squareMeshFront}" Transform="{StaticResource myRotateTransform3D}" >

            <StackPanel Background="Blue" Width="120" Height="80">
                <Button Height="30" Margin="20">
                    <Button.Content>Click Me</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>

1 Ответ

2 голосов
/ 14 декабря 2009

Проблема в Storyboard.Target="{Binding TemplatedParent}". Дайте имя элементу управления Viewport2DVisual3D: <Viewport2DVisual3D x:Name="vp" .../> и установите Storyboard.TargetName="vp" вместо того, что у вас есть ...

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...