WPF:缩放用户控件动画

5
我已经创建了一个用户控件:

<UserControl ...>
  <Grid DataContext="{Binding UserContrlViewModel>
    <Grid Width="200" Height="100" RenderTransformOrigin="0.5,0.5">
      <Grid.Resources>
        <Storyboard x:Key="zoomIn">
          <DoubleAnimation 
              Storyboard.TargetProperty="ScaleTransform.ScaleX" 
              From="0" 
              To="1" 
              Duration="0:0:1" /> 
          <DoubleAnimation 
              Storyboard.TargetProperty="ScaleTransform.ScaleY" 
              From="0"        
              To="1" 
              Duration="0:0:1" />
        </Storyboard>
      </Grid.Resources>
      <Grid.RenderTransform>
        <ScaleTransform />
      </Grid.RenderTransform>
      <Grid.Style>
        <Style TargetType="Grid">
          <Style.Triggers>
            <DataTrigger Binding="{Binding Path=IsActive}" Value="True">
              <DataTrigger.EnterActions>
                <BeginStoryboard>
                  <StaticResource ResourceKey="zoomIn" />
                </BeginStoryboard>
              </DataTrigger.EnterActions>
            </DataTrigger>
          </Style.Triggers>
        </Style>
      </Grid.Style>

      <TextBlock Width="60" Text="Input" />
      <TextBox Width="80" Margin="80,0,0,0" />

    </Grid>
    ...
  </Grid>
</UserControl>

我想实现的是当用户控件的视图模型类的IsActive属性设置为true时,运行zoomIn动画。该动画应该将网格及其内部内容放大。当我触发动画时,我会收到以下错误消息:

无法解析属性路径“ScaleTransform.ScaleX”中的所有属性引用。请验证适用的对象是否支持这些属性。

我的动画有什么问题?我应该如何实现所描述的缩放动画?谢谢。

1个回答

3

我懂了:

  • <ScaleTransform> 应该设置属性 <ScaleTransform ScaleX="0.5" ScaleY="0.5" />,以使缩放从50%开始,例如。
  • 在第一个 <DoubleAnimation> 中,Storyboard.TargetProperty 属性的值应该从 "ScaleTransform.ScaleX" 改为 "RenderTransform.ScaleX"
  • 在第二个 <DoubleAnimation> 中,Storyboard.TargetProperty 属性的值应该从 "ScaleTransform.ScaleY" 改为 "RenderTransform.ScaleY"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接