2

我是一个新手,从 http://www.codeproject.com/Articles/199014/Page-Transition-Control-for-WPF看这个例子

它有很多这样的故事板对象

<DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[1].(SkewTransform.AngleX)" To="100" Duration="0:0:.75" AccelerationRatio=".9" />

和这样的 TransformGroup

`<ScaleTransform 
  ScaleX="1" ScaleY="1" 
  CenterX="{Binding RelativeSource={RelativeSource AncestorType=Grid, Mode=FindAncestor}, Path=ActualWidth, Converter={StaticResource centerConverter}}" 
    CenterY="{Binding RelativeSource={RelativeSource AncestorType=Grid, Mode=FindAncestor}, Path=ActualHeight, Converter={StaticResource centerConverter}}" 
/>

<SkewTransform 
  AngleX="0" 
  AngleY="0" 
    CenterX="{Binding RelativeSource={RelativeSource AncestorType=Grid, Mode=FindAncestor}, Path=ActualWidth, Converter={StaticResource centerConverter}}" 
    CenterY="{Binding RelativeSource={RelativeSource AncestorType=Grid, Mode=FindAncestor}, Path=ActualHeight, Converter={StaticResource centerConverter}}" 
/>

<RotateTransform 
  Angle="0" 
    CenterX="{Binding RelativeSource={RelativeSource AncestorType=Grid, Mode=FindAncestor}, Path=ActualWidth, Converter={StaticResource centerConverter}}" 
    CenterY="{Binding RelativeSource={RelativeSource AncestorType=Grid, Mode=FindAncestor}, Path=ActualHeight, Converter={StaticResource centerConverter}}" 
/>
<TranslateTransform X="0" Y="0" />`

有人可以向我解释它是如何工作的,这太令人困惑了!我花了一整天的时间阅读 Xaml 和 wpf 书籍,但我仍然不明白。当我尝试通过简化代码来理解时,我不断收到如下错误:'[Unknown]' 属性不指向路径'(RenderTransform).(0)[1].(1)' 中的 DependencyObject

WPF真的那么难吗!?!?!?

4

2 回答 2

2

如果您是 WPF 新手,动画可能不是最好的起点,但我会看看是否可以稍微解释一下。

WPF 中有两种类型的“变换”,可用于修改 UI 对象的外观。

  • LayoutTransform在 WPF 确定对象在屏幕上的布局方式后修改对象
  • RenderTransform在渲染到屏幕后修改对象

这两个属性都包含为对象发生的转换Rotate集合: 、ScaleSkewTranslate(上/下或左/右)

动画是在特定时间段内将属性从一个值更改为另一个值的东西。例如,您可能会在Height1 秒内将对象的属性从 50 更改为 200,以使对象在屏幕上明显变大。

您正在查看的代码是这些动画之一。

<DoubleAnimation 
    Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[1].(SkewTransform.AngleX)" 
    To="100" Duration="0:0:.75" AccelerationRatio=".9" />

标签名称告诉我们它是 a DoubleAnimation,这意味着它正在修改类型为 的属性double

TargetProperty告诉我们它正在修改集合中的第二个对象(RenderTransform为了简化一点,RenderTransform.Children[1]

预期的 Transform 有SkewTransform,并且动画设置为在几秒钟内将属性从AngleX现在的任何内容更改为,1000:0:.75

I'm not that familiar with the AccelerationRatio property, however I believe it modifies how fast the value should accelerate from the start value to the end value.

于 2013-02-01T16:40:17.527 回答
0

属性路径中使用 (XY) 形式的任何内容都表示“类型 X 中定义的 DependencyProperty Y 的值”。这些可以是普通的 DP,也可以是在其所有者以外的类型上设置的附加属性。

于 2013-02-01T16:36:37.400 回答