【问题标题】:Why isn't my windows phone silverlight rotation animation working?为什么我的 windows phone silverlight 旋转动画不起作用?
【发布时间】:2012-04-02 05:56:42
【问题描述】:

我的 XAML 中有这个:

            <Grid.Resources>
                <Storyboard x:Name="Storyboard_Animation">
                    <DoubleAnimation 
                            Storyboard.TargetName="button_Submit" 
                            Storyboard.TargetProperty="Angle" 
                            From="0" 
                            To="360" 
                            Duration="0:0:1"></DoubleAnimation>
                </Storyboard>
            </Grid.Resources>

我在同一个网格中有按钮:

            <Button Grid.Row="0" Grid.Column="1" Content="Submit" Margin="0" Name="button_Submit" Click="button_Submit_Click">
                <Button.Template>
                    <ControlTemplate>
                        <Image Source="Images/buttonImage.png"></Image>
                    </ControlTemplate>
                </Button.Template>
                <Button.RenderTransform>
                    <RotateTransform></RotateTransform>
                </Button.RenderTransform>
            </Button>

我的点击方法中有这个:

    private void button_Submit_Click(object sender, RoutedEventArgs e)
    {
        Storyboard_Animation.Begin();
    }

当我点击我的按钮时,我得到了错误: 无法解析指定对象上的 TargetProperty Angle。

但是,除了 Angle,我不知道应该使用什么。

我还有另一段可以正常工作的代码:

    private void RotateStar()
    {
        button_Submit.RenderTransformOrigin = new Point(0.5, 0.5);
        button_Submit.RenderTransform = new RotateTransform();
        DoubleAnimation da = new DoubleAnimation
        {
            From = 0,
            To = 360,
            Duration = TimeSpan.FromSeconds(0.3)
        };
        Storyboard.SetTarget(da, button_Submit.RenderTransform);
        Storyboard.SetTargetProperty(da, new PropertyPath(RotateTransform.AngleProperty));
        Storyboard sb = new Storyboard();
        sb.Children.Add(da);
        sb.Begin();
    }

我想将情节提要放在 XAML 而不是代码中。我需要在我的 XAML 版本中添加/更改什么以使其像代码版本一样工作?

【问题讨论】:

    标签: silverlight windows-phone-7 xaml animation


    【解决方案1】:

    试试这个:

    <Grid.Resources>
        <Storyboard x:Name="Storyboard_Animation">
            <DoubleAnimation 
                Storyboard.TargetName="button_Submit" 
                Storyboard.TargetProperty="(UIElement.RenderTransform).(RotateTransform.Angle)" 
                From="0" 
                To="360" 
                Duration="0:0:1">
            </DoubleAnimation>
        </Storyboard>
    </Grid.Resources>
    

    【讨论】:

    • (UIElement.RenderTransform).(RotateTransform.Angle) 是我需要的。谢谢。
    【解决方案2】:

    您的问题在于使用“TargetProperty”不正确。 Button 没有 Angle 属性,您应该将其用于 RenderTransform。

    这样的:

     <Storyboard x:Name="Storyboard_Animation">
                                    <DoubleAnimation Duration="0:0:1" To="-180.221" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.Rotation)" Storyboard.TargetName="button" d:IsOptimized="True"/>
       </Storyboard>
    

    问候, 罗马。

    【讨论】:

    • 这个不太好用,但你的解释很有帮助。我不确定如何/在哪里找到 TargetProperty 中可接受的值,但在我的情况下,(UIElement.RenderTransform).(RotateTransform.Angle) 是有效的。
    • 可能取决于平台,我的示例适用于 WP 7.1 版本,我没有尝试 7.0
    • 这取决于Button 中的内容。默认情况下,Blend 写入 CompositeTransform,但 @dtc 内部有 RotateTransform
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    相关资源
    最近更新 更多