首页 > 其他分享 >WPF中转换与关键帧动画及报错:WPF动画找不到依赖属性:属性未指向路径“(0).(1)[3].(2)”中的 DependencyObject

WPF中转换与关键帧动画及报错:WPF动画找不到依赖属性:属性未指向路径“(0).(1)[3].(2)”中的 DependencyObject

时间:2023-02-12 22:45:40浏览次数:44  
标签:动画 关键帧 ScaleTransform TransformCollection WPF Children 属性

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)"

 

标签:动画,关键帧,ScaleTransform,TransformCollection,WPF,Children,属性
From: https://www.cnblogs.com/OctopusKing/p/17114842.html

相关文章

  • 学习笔记jira项目15-用泛型增强useDebounce属性
    //后面用泛型来规范类型exportconstuseDebounce=<V>(value:V,delay?:number)=>{const[debouncedValue,setDebouncedValue]=useState(value);useEffect(()......
  • WPF学习笔记(窗体和常用容器的使用)
    WPF学习笔记(窗体和常用容器的使用)新手学习之路;望大佬们指点迷津目录WPF学习笔记(窗体和常用容器的使用)窗体(Window)常用属性:圆角无边框窗体设置及效果展示Grid基本属......
  • 前端项目实战55-具有此属性
     //如果包含like这个属性拉取到当前的值拿取到对应的属性值    if(operation.includes('like')){      values=filter[key].trim().split('');......
  • 前端项目实战51-属性值分割
    //属性按照@分割constsplitKey=key.split('@');console.log(splitKey,"splitKey")//如果长度为2取出数组的属性值constoperation=s......
  • 新房昭之动画美术抽象风格在写作中的借鉴
    艺术类型和抽象风格综述艺术类型在电影电视发展以前,人类艺术的创作集中于文学和绘画两大方面。文学通过文字的编排与描述为读者讲述各色各样的故事,绘画通过色彩与场景的......
  • 022_第三方 bean 属性绑定
    @ConfigurationProperties使用 @ConfigurationProperties为第三方bean绑定属性:    解除使用@ConfigurationProperties注释警告:    @EnableConf......
  • WPF简单自动更新(升级)程序+服务端
    工作逻辑是用户启动主程序,主程序启动更新程序,更新程序立刻检查是否有已经下载好的更新包,如果有则立刻关闭主程序进行更新,如果没有则访问服务器查询更新包,并在后台静默下载,......
  • 【Vue day01】前端发展介绍 Vue的快速使用 插值语法 指令系统之文本指令、事件指令、
    目录前端发展介绍Vue框架入门M-V-VM思想组件化开发单页面应用Vue的快速使用前期准备快速使用对象与标签绑定查看Vue对象插值语法三目运算符指令系统之文本指令v-text和v-......
  • Linux基础命令-ls显示目录和文件的属性信息
    前言        ls命令是常需要用到的linux命令之一,熟悉其参数的搭配有利于操作上的便利,ls命令可以显示目录和文件的属性,一起来看下展开的属性有哪些。一、ls命令介绍......
  • WPF数据绑定机制是如何实现 转载
    转载自https://blog.51cto.com/u_15127553/4275829 接触MVVM模式也有一段时间了,这种将前后台分离开了的设计模式一下子就吸引了我,也是当时一直有一个问题困扰了我很久:WP......