WPF中转换与关键帧动画及报错:WPF动画找不到依赖属性:属性未指向路径“(0).(1)[3].(2)”中的 DependencyObject
2024-10-21 03:12:29
WPF中的转换有:
// 在二维 x-y 坐标系内围绕指定点按顺时针方向旋转对象。
<RotateTransform />
// 在二维 x-y 坐标系中平移(移动)对象。
<TranslateTransform />
// 在 2-D x-y 坐标系统内缩放对象。
<ScaleTransform />
// 表示 2-D 倾斜。
<SkewTransform />
将转换与关键帧动画共用:
<Button
x:Name="Button01"
Grid.Row="1"
Grid.Column="2"
Width="100"
Content="Click Me"
RenderTransformOrigin="0,0">
<Button.RenderTransform>
<TransformGroup>
<RotateTransform />
<TranslateTransform />
<ScaleTransform />
<SkewTransform />
</TransformGroup>
</Button.RenderTransform>
<Button.Triggers>
<EventTrigger RoutedEvent="MouseEnter">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimationUsingKeyFrames
AutoReverse="False"
BeginTime="0:0:0.0"
Storyboard.TargetName="Button01"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(ScaleTransform.ScaleX)">
<EasingDoubleKeyFrame KeyTime="0:0:0.0" Value="1" />
<EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="0.5" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
<EventTrigger RoutedEvent="MouseLeave">
<BeginStoryboard>
<Storyboard>
<DoubleAnimationUsingKeyFrames
AutoReverse="False"
Storyboard.TargetName="Button01"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(ScaleTransform.ScaleX)">
<EasingDoubleKeyFrame KeyTime="0:0:0" Value="0.5" />
<EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="1" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>
如果xaml中,去掉以下代码:
<Button.RenderTransform>
<TransformGroup>
<RotateTransform />
<TranslateTransform />
<ScaleTransform />
<SkewTransform />
</TransformGroup>
</Button.RenderTransform>
代码可以编译成功,运行便会报错,错误信息如下:
代码中的:TransformGroup是一个类,该类中封装着一个属性Children,Children是一个TransformCollection类型,就是一个集合,该集合中的元素,如下:
TransformCollection[0] = RotateTransform实例
TransformCollection[1] = TranslateTransform
TransformCollection[2] = ScaleTransform
TransformCollection[3] = SkewTransform
所以,关键帧动画中的TargetProperty属性值 ,取集合中的第三个:Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(ScaleTransform.ScaleX)"
本例中,只用到ScaleTransform缩放功能,也可以写成下面样式
<Button.RenderTransform>
<TransformGroup>
<ScaleTransform />
</TransformGroup>
</Button.RenderTransform>
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)"
最新文章
- .NET平台开源项目速览(18)C#平台JSON实体类生成器JSON C# Class Generator
- .NET RESTful Web Services入门
- ios 滚动视图响应touchesBegin,touchesEnd等方法
- ado执行sql查询出现“发送数据流时出现算术溢出”错误
- HDU 5266 pog loves szh III (LCA)
- linux 下ffmpeg和mencoder安装
- 一些YY
- Android中的一些基础知识(二)
- linux下多进程的调试
- ural 1352. Mersenne Primes
- 属于自己的MES(一)概念
- 支付宝支付php的demo或sdk报错 Warning: openssl_sign() [function.openssl-sign]: Unknown signature algorithm. in
- 兄弟连学Python-Mysql的操作应用
- pgsql 执行建库脚本时候出现ERROR: relation ";xxx_id_seq"; does not exist
- 使用C#创建Windows服务 并发布Windows 服务
- Python变量与赋值
- Chapter 5 数组:为什么很多编程语言种数组都是从0开始编号?
- java根据地址获取百度API经纬度
- 2,EasyNetQ-日志记录
- SQL Server DATEDIFF() 函数(SQL计算时间差)