我是一个从这个例子中看到的新手 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]'属性不指向路径中的DependencyObject'(RenderTransform)。(0)[1]。(1)'
WPF真是太难了!?!?!?
答案 0 :(得分:2)
如果你是WPF的新手,动画可能不是最好的起点,但我会看看我是否可以解释一下。
WPF中有两种类型的“转换”,可用于修改UI对象的外观。
LayoutTransform
在WPF确定将如何在屏幕上布局后修改对象RenderTransform
在将对象渲染到屏幕后修改对象这两个属性都包含对象的transformations集合:Rotate
,Scale
,Skew
和Translate
(向上移动/向下或向左/向右)
Animation是在特定时间段内将属性从一个值更改为另一个值的内容。例如,您可以在1秒的时间内将对象的Height
属性从50更改为200,以使对象在屏幕上明显变大。
您正在查看的代码就是其中一个动画。
<DoubleAnimation
Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[1].(SkewTransform.AngleX)"
To="100" Duration="0:0:.75" AccelerationRatio=".9" />
标记名称告诉我们它是DoubleAnimation
,这意味着它正在修改类型为double
的属性。
TargetProperty
告诉我们它正在修改RenderTransform
集合中的第二个对象(为了简化它,RenderTransform.Children[1]
)
转换期望有一个SkewTransform
,并且动画设置为在AngleX
期间将100
属性从现在的任何内容更改为0:0:.75
}秒
我不熟悉AccelerationRatio属性,但我相信它会修改值从起始值到结束值加速的速度。
答案 1 :(得分:0)
使用表单(X.Y)的属性路径中的任何内容表示“在类型X中定义的DependencyProperty Y的值”。这些可以是普通DP,也可以是在其所有者以外的类型上设置的附加属性。