在wpf中使用transformgroup会产生错误

时间:2012-05-23 06:16:20

标签: wpf

我正在搜索在对象中组合多个变换,我发现问题是当我尝试放置 transformgroup 时,它会出现错误“无法解析所有属性引用属性路径'RenderTransform.ScaleX'。验证适用的对象是否支持属性。“

这是我从网上复制的转换代码(“感谢制作此代码的人”)

    <Window.Resources>
    <Storyboard x:Key="expandStoryboard">
        <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleX" 
    To="1.3" Duration="0:0:0.2" />
        <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleY"
    To="1.3" Duration="0:0:0.2" />
    </Storyboard>
    <Storyboard x:Key="shrinkStoryboard">
        <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleX"
    To="1" Duration="0:0:0.2" />
        <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleY"
    To="1" Duration="0:0:0.2" />
    </Storyboard>
    <Storyboard x:Key="shakeStoryBoard">
        <DoubleAnimation Storyboard.TargetProperty="RenderTransform.Angle"
                            From="-5" To="5" Duration="0:0:0.05" 
                            AutoReverse="True"
                            RepeatBehavior="3x"
                            FillBehavior="Stop" />
    </Storyboard>

这是我的对象(按钮)

        <Button RenderTransformOrigin="0.5,0.5" Background="Transparent" Focusable="False"  BorderBrush="Transparent"  Height="220" HorizontalAlignment="Left" Margin="591,213,0,0" Name="cmdsettings" VerticalAlignment="Top" Width="189">
        <StackPanel Orientation="Vertical" HorizontalAlignment="Center"  VerticalAlignment="Center" Width="217" Height="220">
            <Image HorizontalAlignment="Center" VerticalAlignment="Center"   Source="Images/settings.png" Height="192" Width="204" />
            <TextBlock VerticalAlignment="center" TextAlignment="center" FontSize="16" Width="123" Foreground="white" FontWeight="Bold" Height="20">Settings</TextBlock>
        </StackPanel>
        <Button.Triggers>
            <EventTrigger RoutedEvent="Button.MouseEnter">
                <BeginStoryboard Storyboard="{StaticResource expandStoryboard}" />
            </EventTrigger>
            <EventTrigger RoutedEvent="Button.MouseLeave">
                <BeginStoryboard Storyboard="{StaticResource shrinkStoryboard}" />
            </EventTrigger>
            <EventTrigger RoutedEvent="Button.Click">
                <BeginStoryboard Storyboard="{StaticResource shakeStoryBoard}" />
            </EventTrigger>
        </Button.Triggers>
        <Button.RenderTransform >
            <TransformGroup>
                <ScaleTransform ScaleX="1" ScaleY="1"/>
                <RotateTransform />
            </TransformGroup>                    
        </Button.RenderTransform>
    </Button>

1 个答案:

答案 0 :(得分:2)

由于Button.RenderTransform包含TransformGroup,您必须通过其Children属性访问包含的变换:

<DoubleAnimation Storyboard.TargetProperty="RenderTransform.Children[0].ScaleX" ... />  
<DoubleAnimation Storyboard.TargetProperty="RenderTransform.Children[0].ScaleY" ... />
<DoubleAnimation Storyboard.TargetProperty="RenderTransform.Children[1].Angle" ... />